正则表达式语法
正则表达式语法
元字符-转义符 \
- 需要用到转义符号的字符有一下: .*+()/?[]^{}
元字符- 字符匹配符
符号 | 符号 | 示例 | 解释 |
---|---|---|---|
[ ] | 可接收的字符列表 | [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 | 以3个数字字符开头的长度为7的数字字母字符串 | 234abcd、12345Pe |
\\W | 匹配单个非数字、大小写字母字符,相当于[^0-9a-zA-Z_] | \\W+\\d | 以至少1个非数字字母字符开头,2个数字字符结尾的字符串 | #20、#?@10 |
java正则表达式默认是区分字母大小写的,如何实现不区分大小写
- (?i)abc表示abc都不区分大小写
- a(?i)bc表示bc都不区分大小写
- a((?i)b)c表示只有b不区分大小写
- 或者创建正则对象时新加一个参数,Pattern.CASE_INSENSITIVE: Pattern pat = Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
元字符- 字符匹配符
- \\s匹配任何空白字符(空格,制表符等)
- \\S匹配任何非空白字符,和\s刚好相反
元字符- 选择匹配符
- 在匹配某个字符串的时候是选择性的,即:既可以匹配这个,也可以匹配那个,则可以使用选择匹配符
符号 | 符号 | 示例 | 解释 |
---|---|---|---|
| | 匹配"|"之前或之后的表达式 | ab|cd | ab或者cd |
元字符- 限定符
- 用于指定其前面的字符和组合项连续出现多少次
符号 | 含义 | 示例 | 说明 | 匹配输入 |
---|---|---|---|---|
* | 指定字符重复0次或n次(无要求) | (abc)* | 仅包含任意个abc的字符串,等效于\w* | abc、abcabcabc |
+ | 指定字符重复1次或n次(至少一次) | m+(abc)* | 以至少1个m开头,后接任意个abc的字符串 | m、mabc、mabcabc |
? | 指定字符重复0次或1次(最多一次) | m+abc? | 以至少1个m开头,后接ab或abc的字符串 | mab,mabc,mmmab,mmabc |
只能输入n个字符 | [abcd] | 由abcd中字母组成的任意长度为3的字符串 | abc,dbc,adc | |
指定至少n个匹配 | [abcd] | 由abcd中字符组成的任意长度不小于3的字符串 | aab,dbc,aaabdc | |
指定至少n个但不多于m个匹配 | [abcd] | 由abcd中字母组成的任意长度不小于3,不大于5的字符串 | abc,abdc,aaaaa,bbcda |
元字符- 定位符
- 定位符,规定要匹配的字符串出现的位置,比如在字符串的开始还是结束的位置
符号 | 含义 | 示例 | 说明 | 匹配输入 |
---|---|---|---|---|
^ | 指定起始字符 | ^ [0-9]+[a-z]* | 以至少1个数字开头,后接任意个小写字母的字符串 | 123,6aa,555edf |
$ | 指定结束符 | ^ [0-9]\-[a-z]+$ | 以1个数字开头后接连字符"-",并以至少1个小写字母结尾的字符串 | 1-a |
\\b | 匹配目标字符串的边界 | han\\b | 这里说的字符串的边界指的是子串间有空格,或者目标字符串的结束位置 | hanhunpingsphan nnhan |
\B | 匹配目标字符串的非边界 | han\\B | 和\b的含义刚刚相反 | hanshunping span nnhan |
分组
常用分组构造形式 | 说明 |
---|---|
(pattern) | 非命名捕获。捕获匹配的子字符串。编号为零的第一个捕获是由整个正则表达式模式匹配的文本 |
(? |
命名捕获,用于name的字符串不能包含任何标点符号,不能以数字开头。 |