Java正则常用规则整理说明

来源:互联网 发布:广东干部网络培训登陆 编辑:程序博客网 时间:2024/05/21 19:41

正则表达式通常用于处理字符串,主要功能是 校验(match)分割(split)替换(ReplaceAll)查找(find)


1 常用符号说明

 (1) 常用字符
\                               转义字符
|                               或
\d                              数字:[0-9]   
\w                               单词字符:[a-zA-Z_0-9]
^                               行的开头
$                               行的结尾
\b                              单词边界(指两个单词间的空格部分)
[abc]                           a、b 或 c(简单类)
[^abc]                          任何字符,除了 a、b 或 c(否定)
[a-zA-Z]                        a 到 z 或 A 到 Z,两头的字母包括在内(范围)
(X)                             X,作为捕获组  

(2)数量词
X?                               X,一次或一次也没有 
X*                               X,零次或多次 
X+                               X,一次或多次 
X{n}                             X,恰好 n 次 
X{n,}                            X,至少 n 次 
X{n,m}                           X,至少 n 次,但是不超过 m 次
组说明:组零始终代表整个表达式, 从左到右,按左括号序号对应组号。$1表示组1匹配的内容

2 简单案例


(1)校验(match) 校验手机号码  ①11位数字 ②第二位必须是3或5或8
<span style="white-space:pre"></span>public static void match_demo(){<span style="white-space:pre"></span>//校验手机号码  ①11位数字 ②第二位必须是3或5或8<span style="white-space:pre"></span>String phoneNum ="13565557890";<span style="white-space:pre"></span>System.out.print(phoneNum.matches("1[358]\\d{9}"));<span style="white-space:pre"></span>}
运行结果: true

(2)替换(replaceAll) 格式化句子,将多个空格替换为一个空格
<span style="white-space:pre"></span>public static void replace_demo(){//格式化句子,将多个空格替换为一个空格String str = "I    like Tom,     but  tom    like Lucy!";System.out.println(str.replaceAll(" +", " "));}
运行结果: I like Tom, but tom like Lucy!

(3)分割(split) 分割出所有单词,按符号分,按可能多个空格分割
<span style="white-space:pre"></span>public static void split_dome(){//分割出所有单词,按符号分,按可能多个空格分割String str = "I    like Tom,but  tom    like Lucy!";String[] strs = str.split(" +|,|!");for(String s : strs){System.out.println(s);}}

运行结果:
I
like
Tom
but
tom
like
Lucy

(4)查找
<span style="white-space:pre"></span>public static void find_demo(){//在句子中查找三个字符的单词String str = "Iii    like Tom,but  tom    like Lucy!";String regex = "\\b[a-zA-z]{3}\\b";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);while(m.find()){System.out.println(m.group() + " ;位置索引 " + m.start()+" : "+m.end());}}

运行结果:
Iii ;位置索引 0 : 3
Tom ;位置索引 12 : 15
but ;位置索引 16 : 19
tom ;位置索引 21 : 24


3 附 组的相关例子


1 将句子还原成正常句子
<span style="white-space:pre"></span>public static void dome1(){String str = "我我我...我我我我我......我我我我我我爱.......爱爱爱爱爱爱爱...爱学学学学学学学编编....编编编编编编程..程程程程程...程程程";System.out.println(str.replaceAll("\\.+", "").replaceAll("(.)\\1+", "$1"));}

运行结果:
我爱学编程

2 将IP地址排序
<span style="white-space:pre"></span>public static void dome2(){String ip_str = "192.168.10.34  127.0.0.1  3.3.3.3  105.70.11.55";String temp1 = ip_str.replaceAll("(\\d+)", "00$1");String temp2 = temp1.replaceAll("0*(\\d{3})", "$1");String[] strs = temp2.split(" +");TreeSet<String> set = new TreeSet<String>();for(String s : strs){set.add(s);}for(String string : set){System.out.println(string.replaceAll("0*(\\d+)", "$1"));}}


运行结果:
3.3.3.3
105.70.11.55
127.0.0.1
192.168.10.34





0 0
原创粉丝点击