使用单引号作为分割点将字符串拆分为子字符串,但不使用反斜杠(\)开头的引号,后跟另一个引号

时间:2018-03-30 12:57:01

标签: java regex regex-lookarounds

考虑下面的这个字符串,我想在单引号上拆分一个字符串,而不是前面跟\,而不是带有正则表达式的另一个单引号('')。

注意:在下面的字符串中,这是两个连续的单引号而不是双引号。

Java is my 'favorite\''\'' prog' language

我用过

split("(?<!\\\\)'")

但不起作用。相反,它也会在每个连续的单引号中以反斜杠

开头

我想要这个输出

Java is my  
favorite\''\'' prog  
language 

3 个答案:

答案 0 :(得分:2)

看看lookbehind / lookahead

("(?<![\\\\'])'(?!')")

答案 1 :(得分:2)

对于此示例,您还可以匹配单个'引号和单词边界\b,反之亦然:

'\b|\b'

split("'\\b|\\b' ")

Example Java

或者使用负面的后观和负面的预测将空白考虑在内:

(?<![\\'])' ?(?!')

split("(?<![\\\\'])' ?(?!')")

Example Java

@Graciano来设置解决方案。

答案 2 :(得分:0)

从你的例子中我建议使用与

类似的东西
split("[^\\\\']'")

但要注意角落的情况。