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

Posted by Yun on Sun, Jun 13, 2021

1. 圆括号 ()

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

1.1 示例:多选结构

(a|b|c):匹配 ab1c

示例 1.1
示例 1.1

1.2 示例:分组

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

示例 1.2
示例 1.2

1.3 示例:捕获文本

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

示例 1.3
示例 1.3

1.4 示例:环视

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

示例 1.4
示例 1.4

2. 方括号 []

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

2.1 示例:字符集

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

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

示例 2.1
示例 2.1

2.2 示例:排除字符集

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

示例 2.2
示例 2.2

3. 对比

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

版权声明:本文遵循 CC BY-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

Copyright statement: This article follows the CC BY-SA 4.0 copyright agreement. For reprinting, please attach the original source link and this statement.