在 java 中将单词中间的撇号 ' 替换为 \'
replace apostrophe ' in the middle of the word with \' in java
我有一个 XPath
//*[@title='ab'cd']
我想将其输出为
//*[@title='ab\'cd']
我正在使用此代码
property = property.replaceAll("^[a-zA-Z]+(?:'[a-zA-Z]+)*", "\'");
但是正在输出
//*[@text='ab'cd']
我在 Whosebug.if 上找不到类似的问题,请在评论中 post link
要替换两个字母之间的 '
,您需要一个 (?<=\p{L})'(?=\p{L})
正则表达式。
A (?<=\p{L})
是正向后视,需要紧靠当前位置左侧的字母,(?=\p{L})
是正向后视,需要紧靠当前位置右侧的字母.
替换参数应为 "\\'"
,需要 4 个反斜杠才能替换为单个反斜杠。
参见Java demo:
String s= "//*[@title='ab'cd']";
System.out.println(s.replaceAll("(?<=\p{L})'(?=\p{L})", "\\'"));
我有一个 XPath
//*[@title='ab'cd']
我想将其输出为
//*[@title='ab\'cd']
我正在使用此代码
property = property.replaceAll("^[a-zA-Z]+(?:'[a-zA-Z]+)*", "\'");
但是正在输出
//*[@text='ab'cd']
我在 Whosebug.if 上找不到类似的问题,请在评论中 post link
要替换两个字母之间的 '
,您需要一个 (?<=\p{L})'(?=\p{L})
正则表达式。
A (?<=\p{L})
是正向后视,需要紧靠当前位置左侧的字母,(?=\p{L})
是正向后视,需要紧靠当前位置右侧的字母.
替换参数应为 "\\'"
,需要 4 个反斜杠才能替换为单个反斜杠。
参见Java demo:
String s= "//*[@title='ab'cd']";
System.out.println(s.replaceAll("(?<=\p{L})'(?=\p{L})", "\\'"));