正则表达式语法

正则表达式语法

元字符-转义符 \

  • 需要用到转义符号的字符有一下: .*+()/?[]^{}

元字符- 字符匹配符

符号 符号 示例 解释
[ ] 可接收的字符列表 [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) 非命名捕获。捕获匹配的子字符串。编号为零的第一个捕获是由整个正则表达式模式匹配的文本
(?pattern) 命名捕获,用于name的字符串不能包含任何标点符号,不能以数字开头。
posted @ 2022-09-26 18:47  萧泽  阅读(75)  评论(0)    收藏  举报