我需要删除所有以\开头并且后跟任何字符的标记。 我创造了这样一种模式:
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);
}
谢谢!
答案 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