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