黑马程序员技术交流社区
标题:
关于正则表达式的疑问
[打印本页]
作者:
kira
时间:
2014-2-15 21:31
标题:
关于正则表达式的疑问
现在是这样的
需求是我将叠词(重复的字符串)替换成美元符号
结果发现却出了错误
代码如下
public class RegexDemo2 {
/**
* @param args
*/
public static void main(String[] args) {
String str1 = "12312312111111344124qqwer";
replaceFun(str1,"(.)\\1+","$");//将叠词替换成$符号
}
public static void replaceFun(String s,String regex,String ns){
s =s.replaceAll(regex, ns);
System.out.println(s);
}
}
复制代码
但是我将美元符号$换成&符号 却编译成功了 各位高手这是是什么原因
作者:
云行水边
时间:
2014-2-15 21:36
同问 我也遇到过类似问题,求解答
作者:
刘旭升
时间:
2014-2-15 22:13
你的问题这有趣,我仔细看了。得到下面结果:
在替换字符串中使用反斜线 (\) 和美元符号 ($) 可能导致与作为字面值替换字符串时所产生的结果不同。美元符号可视为到如上所述已捕获子序列的引用,反斜线可用于转义替换字符串中的字面值字符。
最后想要达到你想要的效果:
public class eternal {
public static void main(String[] args) {
String str1 = "12312312111111344124qqwer";
replaceFun(str1,"(.)\\1+","\\$");//将叠词替换成$符号
}
public static void replaceFun(String s,String regex,String ns){
s=s.replaceAll(regex, ns);
System.out.println(s);
}
}
复制代码
作者:
徐青松
时间:
2014-2-15 22:20
同问,求解!
作者:
kira
时间:
2014-2-15 22:44
刘旭升 发表于 2014-2-15 22:13
你的问题这有趣,我仔细看了。得到下面结果:
在替换字符串中使用反斜线 (\) 和美元符号 ($) 可能导致与作 ...
哇 不愧是真神!!! 原来是这样 我懂了 遇到特殊符号如果要替换最好加上转义符
作者:
baihe
时间:
2014-2-17 16:30
美元符号 ($)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2