1、元字符
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
[…] | 匹配[…]内任意字符 |
| | 或 |
^和$ | 分别表示匹配字符串的开始和结束,java中可以省略,加上更严谨 |
示例:
1) . 匹配任何任意字符 例如 . 可以匹配 1,n,*,+,- ,等
2) \d\w\s 匹配第一个字符为数字,第二个字符为字母或数字、或下划线或汉字,第三字符为空格的字符串 例如:11 ,2a , 1_
3) ^\d\d\d$ 匹配三个全部都为数字的字符串 例如: 123,456,789
4) [ABC] 匹配[…]中任意的一个 例如: A,B,C
5) AB|CD 匹配AB或者CD 例如: AB,CD
2、反义字符
代码 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
[^x] | 匹配除了x以外的任意字符 |
示例:
1)\W 匹配除字母、数字、下划线、汉字以为的字符形如 +,-,*
2)\S 匹配除空格以外的任意字符形如:1,* ,)
3、限定字符
代码 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
示例:
1)\d* 匹配重复0次或多次数字 例如:可能为空 或 任意数字 (2,3。。。。)
2)\d+ 匹配重复1次或多次数字 例如:可能为1个或多个数字 1,23,234,2345,…
3) \d? 匹配重复次个或者一次数字 例如:可能为空或者任意的一个数字(1,2,。。。)
4) \d{8} 匹配重复8次数字 例如:123456768
5) \d{4,} 匹配重复至少4次数字 例如:1234,12345,124244,。。。。。
6) ^\d{8,11}$ 匹配重复8-11次数字 例如:12345678,123456789,1234567890
4、分组提取字符串
匹配电话号并提取示例:
Pattern p = Pattern.compile("^(\\d{3,4})-(\\d{6,8})$");
Matcher matcher = p.matcher("010-12345678");
if(matcher.matches()){
String whole = matcher.group(0); // "010-12345678",0表示匹配整个字符串
String areaCode = matcher.group(1); // "010",1表示匹配的第一个子串
String telNumber = matcher.group(2); // "12345678",2表示匹配的第2个子串
}
5、非贪婪匹配
贪婪匹配:正则表达式中包含重复的限定符时,通常的行为是匹配尽可能多的字符。
非贪婪匹配,有时候需要匹配尽可能少的字符。
代码 | 说明 |
---|---|
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,}? | 重复n次以上,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
6、搜索字符串
String s = "the quick brown fox jumps over the lazy dog.";
Pattern p = Pattern.compile("the");
Matcher m = p.matcher(s);
while (m.find()){
String sub = s.substring(m.start(), m.end());
System.out.println(sub + ", start=" + m.start() + ", end=" + m.end());
}
the, start=0, end=3
the, start=31, end=34
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148660.html