ToolBox

正则表达式入门教程

捕获组与或运算

5/9
教程/正则表达式入门教程/捕获组与或运算
5 节 / 共 9🔤 正则表达式入门教程

捕获组与或运算

捕获组与或运算

特征标群是一组写在 (...) 中的子模式。(...) 中包含的内容将会被看成一个整体,和数学中小括号( )的作用相同。 例如,表达式 (ab)* 匹配连续出现 0 或更多个 ab。 如果没有使用 (...) ,那么表达式 ab* 将匹配连续出现 0 或更多个 b。 再比如之前说的 {} 是用来表示前面一个字符出现指定次数。 但如果在 {} 前加上特征标群 (...) 则表示整个标群内的字符重复 N 次。 我们还可以在 () 中用或字符 | 表示或。例如,(c|g|p)ar 匹配 cargarpar.

"(c|g|p)ar" => The **car** is **par**ked in the **gar**age.

在线练习

请注意,特征标群不仅会匹配,而且会捕获,可以在宿主语言中被引用。 宿主语言可以是 Python 或 JavaScript 或几乎任何在函数定义中实现正则表达式的语言。

2.5.1 非捕获组

非捕获组匹配字符但不捕获该组。 一个非捕获组由在括号 (...) 内的一个 ? 后跟一个 : 表示。 例如,正则表达式 (?:c|g|p)ar(c|g|p)ar 类似,可以匹配相同的字符,但不会创建捕获组。

"(?:c|g|p)ar" => The **car** is **par**ked in the **gar**age.

在线练习

非捕获组用于查找和替换功能,或与捕获组混合以在生成任何其他类型的输出的时候,不记录匹配的内容。 可参考 4. 零宽度断言(前后预查)

2.6 | 或运算符

或运算符就表示或,用作判断条件。

例如 (T|t)he|car 匹配 (T|t)hecar

"(T|t)he|car" => **The** **car** is parked in **the** garage.

在线练习