如果我有一串管道分隔的数据:
123456|abcd|||65464|hgfhgf
如何替换||的任何出现与:| |?
所以最终看起来像这样:
123456|abcd| | |65464|hgfhgf
我尝试使用简单的Java表达式:
delimString.replaceAll("\\\|\\\|","| |");
但这只取代了第一次出现:
123456|abcd| ||65464|hgfhgf
所以我需要一些东西让它重复(我认为贪婪).
解决方法
String resultString = subjectString.replaceAll("\\|(?=\\|)","| ");
正则表达式解释没有Java的双反斜杠:
\| # Match a literal | (?= # only if it's followed by \| # another literal |. ) # End of lookahead assertion
你甚至可以狂野地用空格字符替换两个管道之间的空白区域:
String resultString = subjectString.replaceAll("(?<=\\|)(?=\\|)"," ");