java - 替换java中的撇号 ' in the middle of the word with\'

标签 java regex xpath backslash apostrophe

我有一个 XPath

//*[@title='ab'cd']

我想将其输出为

//*[@title='ab\'cd']

我正在使用此代码

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

但是正在输出

//*[@text='ab'cd']

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

最佳答案

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

一个(?<=\p{L})是一个正向后查找,需要紧邻当前位置左侧的一个字母,并且 (?=\p{L})是一个正向前瞻,需要紧邻当前位置右侧的一个字母。

替换参数应该是 "\\\\'" , 需要 4 个反斜杠才能替换为一个反斜杠。

请参阅Java demo :

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

关于java - 替换java中的撇号 ' in the middle of the word with\',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44726427/

相关文章:

c# - 如何为至少包含四个大写字母的(可能是波兰语的)单词构建正则表达式?

regex - 使用正则表达式的 R 子集数据集

Selenium Webdriver Python 如何从输入标签获取文本

xpath - 我可以使用 xpath 增加日期吗?

java - %etd(msg01) 正则表达式?

java - JetBrains IntelliJ Error launching Intellij Platform - Error invoking main 方法

java - "HH:MM:SS"中的秒数

java - 通过参数调用不同的方法

java - 如何从我的正则表达式中删除这个字符?

python - XPath 不返回内容