我是新来的java正则表达式。java正则表达式 - 搜索两个搜索字符之间的空内容
对不起,发布时间过长。
我有三个要求:
1A),我有一个包含单词“TEST”三个OCCURENCES的字符串。这个单词后面跟着^,我需要检查^的第2次和第3次出现之间的内容是否为空,如果是空白/空进一步搜索,以查看第5次和第6次出现^之间的内容是“” 如果是 “”,则更换它是空白/空 实施例: 现有字符串:
aaaa^
TEST^x^^y^z^""^cccc^bbb^
预期字符串:
aaaa^
TEST^x^^y^z^^cccc^bbb^
1b)中如果第二和第三之间的内容^的发生不是空白而不是“”,那么不要改变第5次和第6次发生的内容
现有的字符串:
TEST^p^^q^r^""^lll^mmm^
期望的字符串:
TEST^p^^q^r^""^lll^mmm^
我需要重复时的测试字中发现这个逻辑检查。如果第5到第6次出现^的内容不是空白而不是“”,如果第2次和第3次之间的内容是空白/空白,则用STR代替它。
现有的字符串:
TEST^g^^q^r^YYY^lll^mmm^
期望的字符串:
TEST^g^STR^q^r^YYY^lll^mmm^
我需要完成ALLT他上面一个Java正则表达式的情况。根据我以前在此论坛发帖的宝贵意见,我可以使案例1工作。我无法让案例2和案例3工作。
如何在相同的正则表达式中完成情况2和3(我不确定正则表达式对于非空的contnet check和'OR'检查)是什么。 在非正则表达式的世界里,在平原,如果别的办法,我可以按如下照顾的三种情况:
if (the content between 2nd and 3rd occurence of^is empty)
{
if(content between 5th and 6th occurence of^is "")
{
make this content empty
}
else
{
set the content between 2nd and 3rd occurence of^as STR
}
}
但因为我需要进行这项检查对于每个字TEST开始在串线,我倾向于正则表达式。
到目前为止,对于情况1的工作正则表达式如下:
str.replaceAll("(TEST\\^[^^]*\\^\\^[^^]*\\^[^^]*\\^)\"\"", "$1")
对于第二种情况,我试着修改上述正则表达式如下却徒劳无功(试图寻找之间的第2和不为空值3RD OCCURENCE这里我以为*\\d0$
代表空[\\d0$]
意味着不为空):
str.replaceAll("(TEST\\^[^^]*\\^[^\\d0$]\\^[^^]*\\^[^^]*\\^)\"\"", "$1")
任何帮助来与正则表达式,负责上述3个usecases的高度赞赏,因为我有一个最后期限,以满足 这个任务。
任何帮助,高度赞赏。
在此先感谢。
可能重复的[java正则表达式搜索替换问题](http://stackoverflow.com/questions/3782522/java-regex-search-replace-issue) – zigdon 2010-09-24 05:40:18
你的1a和1b的例子字符串是等价的 - 差异在哪里?像“TEST^x ^”“^ y^z ^”“^ aaa'这样的字符串应该发生什么? – 2010-09-26 15:17:45
你可能应该编辑你的原始问题,而不是开始一个新的问题。但现在可能太迟了。 – 2010-09-27 15:55:45