正则表达式的语法
想要灵活运用正则表达式,必须了解其中各种元字符的功能,
从字符功能上分为:六大类
1.限定字符
2.选择匹配符
3.分组组合和反向引用符
4.特殊字符
5.字符通配符
6.定位符
元字符——>Metcharacter(转义符\\)
!!!在Java的正则表达式中,两个\\代表其他语言中的\
一下的符号需要用到转义字符:
. * + ( ) $ / \ ? [ ] ^ { }
字符匹配夫
符号 符号含义 示例 解释 匹配项
[] 可接收的字符列表 [sfg] 表示匹配s,f,g的其中任意一个 a , f
[^] 不接收的字符列表 [^abc] 表示除了a,b,c以外的任意字符 h, h
- 连字符 A-Z 表示任意大写字母 DSJHSUHS
. 匹配除\n以外的任意字符 a..b 表示以a开头,b结尾,中间包含两个任意字符 ajgb
\\d 匹配单个数字字符 \\d{3}(\\d)? 表示包含3个或4个数字字符串 2134 ,453
\\D 匹配单个非数字字符 \\D(\\d)* 表示以单个字符开头,后接任意数字字符串 s232
\\w 匹配单个数字,大小写字母字符 \\d{3}\\w{4} 表示以3个数字字符开头的长度为7的数字母字符串 342fvr4
\\W 匹配单个非数字,大小写字母字符 \\W+\\d{2} 至少一个非字母数字字符开头,两个数字字母字符结尾的字符串 @67 , @#56
java正则表达式默认区分大小写,实现不去分大小写:
(?i)abc 表示abc都不区分大小写
a((?i)b)c 表示只有b不去分大小写
ab(?i)c 表示c不去分大小写
或者在创建Pattern是指定参数CASE_INSENSITIVE (不敏感)
Pattern pattern = Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);//不区分大小写
[A-Z]表示匹配A-Z中的任意一个字符
[0-9] 同上
\\w 匹配数字,字母,下划线
\\s 匹配任意的空白字符(空格,制表符 )
\\S 同上取反
选择匹配符:
符号 符号含义 示例 解释
| 匹配“|”之前或之后的表达式 ab|cd ab或者cd
限定字符:
符号 符号含义 示例 解释
* 指定字符出现0次或n次 (abc)* abc=\w*
+ 指定字符出现1次或n次 m+(abc)* 至少以一个m开头,后后接n个a或bc
? 指定字符出现0次或1次 m+abc? 至少一个m开头,接ab,一个或0个c
{n} 只能匹配到n个字符 [abcd]{3} 匹配abcd任意三个
{n,} 指定至少出现n次 [sdf]{3,} 匹配ads任意至少三个
!!!!Java默认贪婪匹配(尽量匹配更多的)
{n,m} 指定至少n次,不多于m [hf]{3,5} 匹配hf至少3个不超过5个
元字符- 定位符:
符号 符号含义 示例 解释
^ 指定起始字符 ^[0-9]+[a-z]* 至少以一个数字开头,后接任意小写字母字符串
$ 指定结束字符 ^[0-9]\\-[a-z]+$至少以一个数字开头后连接字符"-",并以至少1个小写字母结尾
\\b 匹配目标字符串的边界 han\\b
\B 同上相反
正则表达式常用的类