1)如何使基于搜索文字的以下正则表达式^工作为搜索文字|
搜索文字^基于正则表达式(这工作得很好,这是从这个论坛的宝贵投入一个):
String intermediateResult = in.replaceAll("(TEST\\^[^^]*\\^\\^[^^]*\\^[^^]*\\^)\"\"\\^", "$1^");
String finalResult = intermediateResult.replaceAll("(TEST\\^[^^]*\\^)(\\^[^^]*\\^[^^]*\\^([^\"\\^].*|\"[^\"].*))", "$1ST$2");
当我更换^(何地需要)|如下 - 我没有得到期望的结果(不指定字符串中的任何改变):
String intermediateResult = in.replaceAll("(TEST\\|[\\|\\|]*\\|[\\|\\|]*\\|[\\|\\|]*\\|[\\|\\|]*\\|)\"\"\\|", "$1|");
String finalResult = intermediateResult.replaceAll("(TEST\\|[\\|\\|]*\\\\|)(\\|[\\|\\|]*\\|[\\|\\|]*\\|([^\"\\^].*|\"[^\"].*))", "$1ST$2");
是否有任何已知问题|在Java的正则表达式或我需要有不同的搜索字符的正则表达式|
所以,我想通过这种方式,却徒劳无功(有\\ |代替\ |):
首先正则表达式改变了像所有的地方|“” |在给定的字符串中,尽管我希望只有在第5次和第6次出现|时才会使其变为空白是“”,不知道为什么。 由于某种原因,第二个正则表达式完全不会改变字符串。
String intermediateResult = in.replaceAll("(TEST\\|[\\|\\|]*\\\\|[\\|\\|]*\\\\|[\\|\\|]*\\\\|[\\|\\|]*\\\\|)\"\"\\|", "$1|");
String finalResult = intermediateResult.replaceAll("(TEST\\|[\\|\\|]*\\\\|)(\\\\|[\\|\\|]*\\\\|[\\|\\|]*\\|([^\"\\^].*|\"[^\"].*))", "$1ST$2");
2)此外,这是什么正则表达式匹配的部分,并更换STR暗示:
String finalResult = intermediateResult.replaceAll("(TEST\\^[^^]*\\^)(\\^[^^]*\\^[^^]*\\^
**([^\"\\^].*|\"[^\"].*)**)", "**$1ST$2**");
的混乱和长后感到十分抱歉;为了清楚起见,我将仅发布一个问题并将其他问题发布在另一个帖子中。
在阐述从原始电子邮件的第一个问题:
我有以下的字符串(每个线由\ r \ n隔开)。第一个与搜索字符相关的正则表达式|应该检查第二次和第三次出现的内容是空白的,如果第5和第6之间的内容|是“”,然后将其设为空白。
第二次正则表达式(再次涉及| |)必须看看第5次和第6次之间的内容是否出现|不为空且不为空,则将第二次和第三次之间的内容作为ST。
实施例,如下所示:
现有字符串:
TEST|X||Y||**""**|C|""|\r\n\
TEST|Z||Y||SOMETHING OTHER THAN "" OR empty||\r\n\
希望的输出,当|
两个相关的正则表达式replaceall()
从原始发布的运行:
TEST|X||Y|||C|""|\r\n\
TEST|Z|**ST**|Y||SOMETHING OTHER THAN "" OR empty||\r\n\
请详细说明你的问题。你想表达什么? *对于搜索字面值有什么作用| *是什么意思? – 2010-09-26 15:41:56
Java中的正则表达式!请停止伤害我的眼睛! ......在更严肃的语气中,当正则表达式不被Java的这个缺点变得更加难以理解时,正则表达式问题会好得多。只需发布正则表达式并摆脱Java。除非这个问题实际上是关于Java的(我无法理解它)。 – 2010-09-26 16:09:46
不要在单个帖子中提出多个问题。 – 2010-09-26 16:14:45