正则表达式中的 [] 与 ()

1. 圆括号 ()

圆括号在正则表达式中表示的概念,主要应用于限制多选结构的范围、分组、捕获文本、环视。

1.1 示例:多选结构

(a|b|c):匹配 ab1c
20210613160033950

1.2 示例:分组

(abc)?:匹配 abc 一次或者零次
2021061316020699

1.3 示例:捕获文本

(aaa)(bbb)(ccc)(?:ddd)(eee):可以用 $1 获取 (aaa) 匹配到的内容,用 $3 则获取到了 (ccc) 匹配到的内容,而 $4 则获取的是由 (eee) 匹配到的内容
2021061316041337

1.4 示例:环视

a(?=bbbbb):顺序环视,表示 a 后面必须紧跟 5 个连续的 b
20210613160540843


2. 方括号 []

方括号在正则表达式中用于单个匹配,可用于字符集、排除字符集之中。

2.1 示例:字符集

[0-9]:表示此位置上的字符只能是 09 这十个数字

圆括号可以匹配多个连续的字符,而一对方括号只能匹配单个字符
20210613160953293

2.2 示例:排除字符集

[^0-3]:表示此位置上的字符不可以是 03
20210613161108710


3. 对比

  • () 的内容表示一个子表达式() 本身不匹配任何字符,也不限制匹配任何字符,只是把括号内的内容作为同一个表达式来处理
    • (ab){1,3}:表示 ab 一起连续出现最少 1 次,最多 3 次
  • [] 表示匹配的字符在 [],并且只能出现一次,并且特殊字符写在 [] 会被当成普通字符来匹配
    • [(a)]:匹配 (a)这三个字符