替换撇号'在'的中间在java中

时间:2017-06-23 16:50:39

标签: java regex xpath backslash apostrophe

我有一个XPath

  

// * [@标题=' AB' CD']

我希望将其输出为

  

// * [@标题=' AB \' CD']

我正在使用此代码

property = property.replaceAll("^[a-zA-Z]+(?:'[a-zA-Z]+)*", "\'");

但正在输出

  

// * [@文本=' AB' CD']

我无法在StackOverflow上找到类似的问题。如果有请在评论中发布链接。

1 个答案:

答案 0 :(得分:3)

要在两个字母之间替换',您需要(?<=\p{L})'(?=\p{L})正则表达式。

(?<=\p{L})是一个积极的外观,需要紧靠当前位置左侧的字母,而(?=\p{L})是一个正向前瞻,需要紧靠当前位置右侧的字母。< / p>

替换参数应为"\\\\'",需要4个反斜杠替换为单个反斜杠。

请参阅Java demo

String s= "//*[@title='ab'cd']";
System.out.println(s.replaceAll("(?<=\\p{L})'(?=\\p{L})", "\\\\'"));