【发布时间】:2017-06-23 16:50:38
【问题描述】:
我有一个 XPath
//*[@title='ab'cd']
我想将其输出为
//*[@title='ab\'cd']
我正在使用此代码
property = property.replaceAll("^[a-zA-Z]+(?:'[a-zA-Z]+)*", "\'");
但它正在输出
//*[@text='ab'cd']
我在 StackOverflow 上找不到类似的问题。如果有,请在 cmets 中发布链接。
【问题讨论】:
-
试试
property.replaceAll("\\b'\\b", "\\\\'");。或者,如果您真的是指字母之间,.replaceAll("(?<=\\p{L})'(?=\\p{L})", "\\\\'") -
工作,回答问题,我会接受并投票。你知道我在哪里可以学到这些东西吗?
-
请注意:输入不是有效的 XPath,所需的输出也不是有效的 XPath。如果您希望它作为 Java 字符串文字中的有效 XPath 表达式,那么对于 XPath 1.0,您需要
//*[@text=\"ab'cd\"],而对于 XPath 2.0,另一种选择是//*[@text='ab''cd'] -
@MichaelKay 应该如何自动化这个 //*[@text=''80s']。 80 年代是文本。
-
如果是 XPath-1.0-embedded-in-Java,请使用
"//*[@text=\"'80s\"]"
标签: java regex xpath backslash apostrophe