如何更换所有星号?

Tim*_*Tim 12 java regex

在Java中,我想用替换所有*字符\*.

示例:文字: select * from blah

结果: select \\* from blah

public static void main(String[] args) {
    String test = "select * from blah";
    test = test.replaceAll("*", "\\*");
    System.out.println(test);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,也没有添加转义反斜杠.

Tim*_*Tim 16

我想到了

    String test = "select * from blah *asdf";
    test = test.replaceAll("\\*", "\\\\*");
    System.out.println(test);
Run Code Online (Sandbox Code Playgroud)

  • @WernerCD:`replaceAll()` 是 Java,但 `@""` 是 C# 逐字字符串文字——Java 没有类似的东西。 (2认同)

Sea*_*oyd 11

你并不需要为这个正则表达式的任何功能,所以你应该使用非正则表达式版本与string.replace(的CharSequence,CharSequence中):

String test = "select * from blah *asdf";
test = test.replace("*", "\\*");
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)


Ron*_*onU 6

对于那些在家里得分的人,并且因为理解答案可能对其他人有帮助...

String test = "select * from blah *asdf";
test = test.replaceAll("\\*", "\\\\*");
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)

因为必须转义特殊字符*才能使正则表达式满意.然而,\就是在Java字符串中的特殊字符,所以在构建Java这个表达式时,还必须躲避\,因此\\*.

在Java字符串中放置正则表达式时,这经常会导致双重转义.