正则表达式学习笔记
常用正则表达式
复制代码
1、匹配字母 Pattern pattern=Pattern.compile("[a-zA-Z]+");
2、匹配数字 Pattern pattern=Pattern.compile("[0-9]+");
3、匹配字母和数字 Pattern pattern=Pattern.compile("([0-9]+)|([a-zA-Z]+)");
4、匹配百度排行榜 Pattern pattern=Pattern.compile("<a target=\"_blank\" title=\"(\\S*)\"");
5、匹配IP地址:Pattern pattern=Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d+");
6、匹配4位数字:Pattern pattern=Pattern.compile("\\d\\d\\d\\d");
7、匹配
需要转义的字符
复制代码
.*+()$/\?[]^{}
元字符
符号 |
含义 |
示例 |
说明 |
匹配输入 |
[] |
可接收的字符列表 |
[efgh] |
e、f、g、h中的任意1个字符 |
|
[^] |
不可接收的字符列表 |
[^abc] |
除a、b、c之外的任意1个字符,包括数字和特殊符号 |
|
- |
连字符 |
A-Z |
任意单个大写字母 |
|
. |
匹配除\n以外的任何字符 |
a...b |
以a开头,b结尾,中间包括2个任意字符的长度为4的字符串 |
aaab、aefb、a35b、a#*b |
\d |
匹配单个数字字符,相当于[0-9] |
\\d{3}(\\d)? |
包含3个或4个数字的字符串 |
123、9876 |
\D |
匹配单个非数字字符串,相当于[^0-9] |
\\d(\\d)* |
以单个非数字字符串开头,后接任意个数字字符串 |
a、A342 |
\w |
匹配单个数字、大小写字母字符,相当于[0-9a-zA-Z_] |
\\d{3}\\w{4} |
以3个数字字符串开头的长度为7的数字字母字符串 |
234abcd、12345Pe |
\W |
匹配单个非数字、大小写字符,相当于[^0-9a-zA-Z_] |
\\W+\\d{2} |
以至少1个非数字字母字符开头,2个数字字符结尾的字符串 |
#29、#?@10 |
(?i) |
不区分大小写 |
(?i)abc、a(?i)bc、a((?i)b)c |
1、abc都不区分大小写;2、bc不区分大小写;3、仅b不区分大小写 |
|
\\s |
匹配任何空白字符(空格,制表符等) |
|
|
|
\\S |
匹配任何非空白字符(空格,制表符等) |
|
|
|
竖杠 |
匹配竖杠之前或之后的表达式 |
|
|
|
限定符
Java调用代码
复制代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String content=".......";
Pattern pattern=Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d+");
//Pattern pattern=Pattern.compile(regStr,Pattern.CASE_INSENSITIVE);// 不区分大小写
Matcher matcher = pattern.matcher(content);
while(matcher.find()) {
System.out.println("--> "+matcher.group(0));
}
}