一、概念
正则表达式是一种文本处理工具,通常用来检索、替换某个符合规则或者模式的文本。
二、字符串中的使用
1.通过String的matches()方法可以验证一个字符串是否匹配某个正则表达式(返回值,boolean),常用于检查某个字符串是否符合特定规则。
2.split()方法可以将字符串从正则表达式匹配的位置截取为字符串数组。
3.replaceFirst()和replaceAll()分别替换正则表达式第一个匹配的字串或者替换整个字串String中所有匹配正则表达式的内容。
三、语法
1.元字符
元字符 |
Java正则写法 |
意义 |
. |
. |
匹配除”\r\n”之外的任何单个字符 |
\d |
\\d |
匹配任意数字,等价于[0-9] |
\D |
\\D |
匹配非数字字符,等价于[^0-9] |
\s |
\\s |
匹配空格字符,等价于[\f\n\r\t\v] |
\S |
\\S |
匹配非空格字符 |
\w |
\\w |
匹配单词类字符,等价于[A-Za-z0-9_] |
\W |
\\W |
匹配非单词类字符 |
^ |
^ |
匹配字符串开始位置 |
$ |
$ |
匹配字符串结束位置 |
2.组合元字符
字符组 |
意义 |
[abc] |
匹配a、b、c中的任何一个字符 |
[^abc] |
匹配除a、b、c以外的任何字符 |
[a-zA-Z] |
匹配任意一个英文字母 |
[a-d] |
匹配a至d的任意一个字母 |
[a-d[x-z]] |
并(或)运算,匹配a、b、c、d或x、y、z中任意一个 |
[a-z&&[x-z]] |
交(与)运算,匹配x、y、z |
[a-f&&[^bc]] |
差运算,匹配a、d、e、f |
3.量词
量词格式 |
意义 |
X? |
表达式X出现0次或1次,等价于{0,1} |
X* |
表达式X出现0次或多次,等价于{0,} |
X+ |
表达式X出现1次或多次,等价于{1,} |
X{n} |
表达式X正好出现n次 |
X{n,} |
表达式X至少出现n次 |
X{n,m} |
表达式X出现n次至m次 |
四、常用类及其方法
1.Pattern和Matcher类
Pattern类的对象用于完成正则表达式的编译处理,使用静态方法: Pattern.compile(正则表达式)完成将正则表达式处理为模板的过程。
Matcher类的对象用于根据pattern正则表达式模板对输入字符串进行解释和匹配,
Matcher matcher = p.matcher(“输入字符串”)。
2.常用方法操作
matcher.find() 方法 尝试匹配搜索输入字符串中符合模板的下一个子串,
matcher.group() 方法 获取匹配到的组,
通常用法:用 (.*?) 或者 (.+?) 来表示要取的部分内容,表达式 a(.*?)b 用group(0)获取完整表达式,用group(1)查找.*?的内容,
3.贪婪 和非贪婪匹配:
贪婪匹配:匹配到最后才结束;
非贪婪匹配:匹配到一个就结束。
原文:https://www.cnblogs.com/NightWhite/p/14851287.html