【发布时间】:2010-10-11 06:05:06
【问题描述】:
对于 String 类中 Java 的 replaceAll 方法,加号 (+) 作为第一个参数(即要替换的字符串)的正确正则表达式是什么?我的语法不正确。
【问题讨论】:
对于 String 类中 Java 的 replaceAll 方法,加号 (+) 作为第一个参数(即要替换的字符串)的正确正则表达式是什么?我的语法不正确。
【问题讨论】:
您需要使用 \ 对 + 进行转义,因为 \ 本身是 Java 字符串中的特殊字符,您需要使用另一个 \ 对其进行转义。
因此,您的正则表达式字符串将在 Java 代码中定义为“\\+”。
即这个例子:
String test = "ABCD+EFGH";
test = test.replaceAll("\\+", "-");
System.out.println(test);
【讨论】:
您需要转义正则表达式的+,使用\。
然而,Java 使用 String 参数来构造正则表达式,它使用 \ 作为自己的转义序列。所以你必须逃避\本身:
"\\+"
【讨论】:
如有疑问,请让 java 为您完成工作:
myStr.replaceAll(Pattern.quote("+"), replaceStr);
【讨论】:
myStr.replace("+", replaceStr)
\n 的出现,其中n 是一个数字将被nth 捕获替换(它将是空白的,因为没有捕获) .
如果你想要一个简单的字符串查找和替换(即你不需要正则表达式),使用StringUtils from Apache Commons 可能更简单,它可以让你写:
mystr = StringUtils.replace(mystr, "+", "plus");
【讨论】:
其他人已经说明了正确的方法:
+ 转义为\\+
Pattern.quote 方法转义所有正则表达式元字符。您可以使用的另一种方法是将+ 放入字符类中。许多正则表达式元字符(.、*、+ 等等)在字符类中按字面意思处理。
所以你也可以这样做:
orgStr.replaceAll("[+]",replaceStr);
【讨论】:
假设你想用\\\-替换-,使用:
text.replaceAll("-", "\\\\\\\\-");
【讨论】:
String str="Hello+Hello";
str=str.replaceAll("\\+","-");
System.out.println(str);
或
String str="Hello+Hello";
str=str.replace(Pattern.quote(str),"_");
System.out.println(str);
【讨论】:
Pattern.quote("+")而不是Pattern.quote(str)吗?
用不确定的重复次数替换多个“+”怎么样?
例子:test+test+test+1234
(+) 或 [+] 似乎选择单个文字字符,但重复。
【讨论】: