正则中的圆括号()的用途详解

  • Post category:Python

当在正则表达式中使用圆括号 () 时,它们具有一些特殊用途。以下是关于正则表达式中圆括号的用途的详细解释:

1. 匹配子表达式

圆括号可以用于将一组正则表达式归为一个子表达式,以便在匹配时引用或重复使用。例如:

(?:pattern)

上面的 (?:pattern) 表示一个非捕获子表达式,它匹配实际的正则表达式 pattern,但不会捕获其匹配项。这在你需要为整个子表达式开启一个分组,但又不需要捕获该组的情况下非常有用。例如:

I love (?:coding|swimming).

上面的正则表达式将匹配字符串 “I love coding.” 和 “I love swimming.”,但它仅会将 “coding” 或 “swimming” 视为一个分组,而不会捕获到这个分组。

2. 分组捕获

圆括号也可以用于捕获匹配的文本,并将其保存到一个命名组或一个数字组中。下面是一些示例:

2.1. 数字组:

(pattern)

上面的 (pattern) 表达式表示将子表达式 pattern 包含的文本作为一个分组进行匹配,并将分组保存为一个数字组。例如:

(\d+)-(\w+)

上面的正则表达式将匹配 “123-abc” 这类类似的字符串,并将其分组为两部分:”123″ 和 “abc”。

2.2. 命名组:

(?P<name>pattern)

上面的 (?P<name>pattern) 表达式表示将子表达式 pattern 包含的文本作为一个分组进行匹配,并将分组保存到一个命名组中。例如:

(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})

上面的正则表达式将匹配 YYYY-MM-DD 这样的日期字符串,并将年份(year)、月份(month)和日期(day)分别保存到对应的命名组中。

圆括号在正则表达式中是一个非常重要的组成部分,熟练应用它们可以让你更加灵活、高效地匹配文本。