java 用正则 筛选掉特殊符号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 用正则 筛选掉特殊符号相关的知识,希望对你有一定的参考价值。
http:\/\/video.sina.com.cn\/p\/eladies\/nx\/v\/style\/2010\/1202\/121261198619.html?opsubject_id=eladies-596
这个是我要匹配的字符串
中间有许多"\",我需要用正则剔除掉"\",生成一个正常的url
我挺急的,在线等,谢谢大家了
重点是这个"用正则"
因为项目的需要,需要尽可能的考虑可能出现的情况,现在想看看这种url能不能单纯的用正则解决
Matcher m1 = p.matcher("3 * ( 5 * ( 5 - 2 ) ) - 9");
Matcher m2 = p.matcher("2 * 3 * 4 - 8 + 9 / 3 / 3");
Matcher m3 = p.matcher("( ( ( 3 ^ 4 ) ) )");
System.out.println(m1.matches());
System.out.println(m2.matches());
System.out.println(m3.matches());
上面的代码我已经测试过了,你试试吧~!
加号+在JAVA中有特殊的含义(字符串的连接),所以表示加号+必须要用\\+ 参考技术B 定义字符串的时候需要转移才可以
public static void main(String[] args) throws Exception
String s="http:\\/\\/video.sina.com.cn\\/p\\/eladies\\/nx\\/v\\/style\\/2010\\/1202\\/121261198619.html?opsubject_id=eladies-596";
System.out.println(s);
System.out.print(s.replaceAll("\\\\",""));
输出结果
http:\/\/video.sina.com.cn\/p\/eladies\/nx\/v\/style\/2010\/1202\/121261198619.html?opsubject_id=eladies-596
http://video.sina.com.cn/p/eladies/nx/v/style/2010/1202/121261198619.html?opsubject_id=eladies-596 参考技术C String s = "http:\\/\\/video.sina.com.cn\\/p\\/eladies\\/nx\\/v\\/style\\/2010\\/1202\\/121261198619.html?opsubject_id=eladies-596";
s.replaceAll("\\\\", "");
“\”需要进行转义成“\\”,Java一些特殊符号进行相关转义的。楼主可以搜搜看看这些的 参考技术D 首先java里面\在字符串中需要转义,转移就是在这个\前再加一个\
所以你定义:String s="http:\\/\\/video.sina.com.cn\\/p\\/eladies\\/nx\\/v\\/style\\/2010\\/1202\\/121261198619.html?opsubject_id=eladies-596";
String result = s.replace("\\", ""); 第5个回答 2010-12-09 String s=" http:\/\/video.sina.com.cn\/p\/eladies\/nx\/v\/style\/2010\/1202\/121261198619.html?opsubject_id=eladies-596";
String c=s.replaceAll("/","");
OK了。要只用是吧\去除那么这样就可以了。
具体参见JDK
replaceAll("把字符串里的什么","全部替换成什么");
replace("把字符串里的第一个什么","替换成什么");
这样。
JAVA代码如下
public static void main(String aa[])
String str="http:\\/\\/video.sina.com.cn\\/p\\/eladies\\/nx\\/v\\/style\\" +
"/2010\\/1202\\/121261198619.html?opsubject_id=eladies-596";
System.out.println(str);
String regex="\\\\";
Pattern p= Pattern.compile(regex);
Matcher m=p.matcher(str);
String s=m.replaceAll("");
System.out.println(s);
若复杂只用修改regex对象表达式就可以了。。本回答被提问者和网友采纳
java用正则表达式判定特殊字符是不是,存在就替换的问题?
我在String ss = "aabbcc[dd]eeff[gg]hhiijjkkll[mmnn]oopp";这个字符串,用正则表达式把[]这样的特殊字符过滤出来,就是把[dd]替换成dd,原来的字符串里面也变成aabbccddeeff...
String的replaceAll方法可以使用正则表达式进行搜索并替换,但不改变原字符串,如果需要改变原字符串,则需要用赋值语句:ss=ss.replaceAll("正则表达式","替换内容");
比如将"aabbcc[dd]eeff[gg]hhiijjkkll[mmnn]oopp"里的[等特殊符号去掉:
ss=ss.replaceAll("\W",""); 参考技术A 至少有两种正则表达式的方法:
1、直接调用String类的replaceAll(String regex, String replacement)方法
代码:
String ss = "aabbcc[dd]eeff[gg]hhiijjkkll[mmnn]oopp";
ss.replaceAll("[\\[\\]\\\\]", "");//返回结果,可打印或返回
优点:简单
缺点:不具有通用性,需求变动则不适用,例如[dd]替换成DD
2、通过匹配规则来截取字符串
代码:
String ss = "aabbcc[dd]eeff[gg]hhiijjkkll[mmnn]oopp";
//正则表达式,表示由非[、]、、的任意字符构成
String tmp = "[^\\[^\\^\\]^\\.]";
//正则表达式,由5组构成第一组是普通字符串,第二组是"["字符串,第三组是普通字符串,第四组是"]"字符串,第五组是普通字符串
Pattern pattern = Pattern.compile("(" + tmp + "*)(\\[\\)(" + tmp + "*)(\\\\])(" + tmp + "*)");
Matcher matcher = pattern.matcher(ss);
StringBuffer result = new StringBuffer();
while(matcher.find())
result.append(matcher.group(1) + matcher.group(3) + matcher.group(5));
//result就是最终结果。
优点:具有一定的通用性,可自己定制需要的字符串,新字符串可以由原字符串的部分组成,也可与其他字符拼装,能更好满足可重用性,例如需求变更成[dd]替换成DD,代码只需将result.append(matcher.group(1)+matcher.group(3)+matcher.group(5));换成result.append(matcher.group(1)+matcher.group(3).toUpperCase()+matcher.group(5));就能完成
缺点:代码较长
PS:StringBuffer可转化成String再返回 参考技术B [\[\\\]]+
在java中
String ss = ss.replaceAll("[\\[\\\\\\]]+", "");
以上是关于java 用正则 筛选掉特殊符号的主要内容,如果未能解决你的问题,请参考以下文章