java使⽤正则Pattern等实现【搜索-提取-分割-替换】功能正则表达式在字符串处理上有着强⼤的功能,sun在jdk1.4加⼊了对它的⽀持
下⾯简单的说下它的4种常⽤功能:
搜索:
String str="abc efg ABC";
String regEx="a|f"; //表⽰a或f
Pattern p=Patternpile(regEx);
Matcher m=p.matcher(str);
boolean rs=m.find();
如果str中有regEx,那么rs为true,否则为flase。如果想在查时忽略⼤⼩写,则可以写成Pattern
p=Patternpile(regEx,Pattern.CASE_INSENSITIVE);
提取:
String regEx=".+\\\\(.+)$";
String str="c:\\dir1\\dir2\\";
Pattern p=Patternpile(regEx);
Matcher m=p.matcher(str);
boolean rs=m.find();
for(int i=1;i<=m.Count();i++){
System.out.println(m.(i));
}
以上的执⾏结果为,提取的字符串储存在m.(i)中,其中i最⼤值为m.Count();
分割:
String regEx="::";
Pattern p=Patternpile(regEx);
String[] r=p.split("xd::abc::cde");
执⾏后,r就是{"xd","abc","cde"},其实分割时还有跟简单的⽅法:
String str="xd::abc::cde";
String[] r=str.split("::");
替换(删除):
String regEx="a+"; //表⽰⼀个或多个a
Pattern p=Patternpile(regEx);
Matcher m=p.matcher("aaabbced a ccdeaa");
String placeAll("A");
结果为"Abbced A ccdeA"
如果写成空串,既可达到删除的功能,⽐如:
String placeAll("");
结果为"bbced ccde"
附:
\d 等於 [0-9] 數字
\D 等於 [^0-9] ⾮數字
\s 等於 [ \t\n\x0B\f\r] 空⽩字元
\S 等於 [^ \t\n\x0B\f\r] ⾮空⽩字元
\w 等於 [a-zA-Z_0-9] 數字或是英⽂字
\W 等於 [^a-zA-Z_0-9] ⾮數字與英⽂字
^ 表⽰每⾏的開
$ 表⽰每⾏的結尾
常⽤正则表达式
"^\d+$" //⾮负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //⾮正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //⾮负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //⾮正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(\.\d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英⽂字母组成的字符串
"^[A-Z]+$" //由26个英⽂字母的⼤写组成的字符串
"^[a-z]+$" //由26个英⽂字母的⼩写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英⽂字母组成的字符串
"^\w+$" //由数字、26个英⽂字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/// 年-⽉-⽇
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/// ⽉/⽇/年
"^([w-.]"//Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"//电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$ "//IP地址
匹配中⽂字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空⾏的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配⾸尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]
匹配⽹址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
⼀些常⽤正则表达式
提取信息中的⽹络链接:
(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? 提取信息中的邮件地址:
\w+([-+.]
提取信息中的图⽚链接:
(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
提取信息中的ip地址:
(\d+)\.(\d+)\.(\d+)\.(\d+)
提取信息中的中国⼿机号码:
(86)*0*13\d{9}
提取信息中的中国固定电话号码:
(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
提取信息中的中国电话号码(包括移动和固定电话):
(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
提取信息中的中国:
[1-9]{1}(\d+){5}
提取信息中的中国⾝份证号码:
时间正则表达式java\d{18}|\d{15}
提取信息中的整数:
\d+
提取信息中的浮点数(即⼩数):
(-?\d*)\.?\d+
提取信息中的任何数字 :
(-?\d*)(\.\d+)?
提取信息中的中⽂字符串:
[\u4e00-\u9fa5]*
提取信息中的双字节字符串 (汉字):
[^\x00-\xff]*
提取信息中的英⽂字符串:
\w*
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论