有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ReEX在“中间”中用“java”替换单词的撇号

我有一个XPath

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

我想把它输出为

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

我正在使用这个代码

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

但它正在输出

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

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


共 (1) 个答案

  1. # 1 楼答案

    要在两个字母之间替换',需要一个(?<=\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})", "\\\\'"));