代码之家  ›  专栏  ›  技术社区  ›  stefan.stt

任意数量反斜杠的正则表达式[重复]

  •  -1
  • stefan.stt  · 技术社区  · 5 年前

    \"

    <a href=\"google.com\"> click to search </a>
    

    我需要更换所有的电池 \" 用一个 "

    <a href="google.com"> click to search </a>
    

    这个不起作用: str.replaceAll("\\\"", "\"") 因为它只匹配引用。我不知道怎么用反斜杠。我本可以先删除反斜杠,但我的字符串中还有其他反斜杠。

    0 回复  |  直到 11 年前
        1
  •  68
  •   Pshemo    6 年前

    如果你 不需要任何正则表达式机制,如预定义的字符类\d、量词等。 replaceAll replace 它需要文字

    str = str.replace("\\\"","\"");
    

    这两种方法都将取代 全部的 目标的出现,但 代替 我们将严格对待目标。


    但是如果你真的 必须

    str = str.replaceAll("\\\\\"", "\"")
    

    \ 是正则表达式中的特殊字符(例如用于创建 \d -表示数字的字符类)。让正则表达式处理 \ 作为普通角色,您需要放置另一个角色 \ 在它关闭它的特殊意义之前(你需要逃避它)。所以我们要创建的正则表达式是 \\

    \\ "\\\\" \ \t 表示制表器),所以您还需要同时转义这两个 \ 那里

    换句话说,你需要逃离 \

    • 一次在正则表达式中 \\
    • "\\\\"
        2
  •  6
  •   Community Mohan Dere    5 年前

    str.replace("\\\"", "\"")
    

    应该很好用。

    replace 方法获取两个子字符串,并用第二个子字符串替换第一个子字符串的所有不重叠引用。根据 javadoc :

    public String replace(CharSequence target,
                          CharSequence replacement)
    

    用指定的文字替换序列替换与文字目标序列匹配的此字符串的每个子字符串。替换从字符串的开头一直进行到结尾,例如,替换 "aa" "b" 串连 "aaa" 将导致 "ba" 而不是 "ab" .

        3
  •  0
  •   godspeedlee    13 年前

    试试这个: str.replaceAll("\\\\\"", "\\\"")
    因为Java将取代 \ 两次:

    \\\\\" --&燃气轮机; \\" (用于字符串)
    \\" --&燃气轮机; \"