如何在java String中替换\后跟字母?

时间:2013-12-27 15:28:02

标签: java regex string

我需要删除所有以\开头并且后跟任何字符的标记。 我创造了这样一种模式:

input.replaceAll("\\[a-zA-Z0-9]*", "");

但它不起作用,因为它不会从字符串\rad中删除5 4\rad

修改

public static void main(String[] args)
    {
        String input="Wolf 3 3\4par";
        String replaceAll = input.replaceAll("\\\\[a-zA-Z0-9]*", "");
        System.out.println("replaceAll=" + replaceAll);
    }

谢谢!

3 个答案:

答案 0 :(得分:5)

\在正则表达式中的字符串文字中是特殊的两者。要将实际的\放在正则表达式中,您必须将其两次转义。你还必须在某个地方分配结果,从你正在做的问题中不清楚。所以:

input = input.replaceAll("\\\\[a-zA-Z0-9]*", "");

完整示例:Live Copy

import java.util.*;

public class Temp {

    public static void main(String[] args) {
        String input = "4 5 \\rad";
        input = input.replaceAll("\\\\[a-zA-Z0-9]*", "");
        System.out.println(input);
    }
}

输出:

4 5 

答案 1 :(得分:2)

要在正则表达式中创建\字面值,您需要将\\传递给正则表达式引擎。但要在String中创建\字面值,您还必须将其转义,因此您需要将其写为"\\"

  • \字面值在正则表达式引擎中
  • \\正则表达式
  • "\\\\"表示正则表达式模式的字符串

现在,您在正则表达式模式中使用一个\正则表达式引擎将其视为\[,它将[转义为简单的文字。

试试这种方式

input.replaceAll("\\\\[a-zA-Z0-9]*", "");

答案 2 :(得分:0)

来自

  

抱歉,我的字符串正好是5 4 \ rad。确实如何删除\ rad? - Volodymyr Levytskyi

尝试

String k= "5 4\rad";
System.out.println(k.replaceAll("\r\\w*", ""));

输出

5 4