第三章 括号

2018-12-13  本文已影响6人  马小跳_

3.1 分组

括号可以把有联系的多个元素归拢起来,使它们作为一个整体,可以由量词来约束。(一起出现或不出现, 或者出现n次)

3.2 多选结构

  多选结构的形式是(...|...),在括号内部用竖线|分隔开多个子表达式,这些子表达式也叫做多选分支(option)。在匹配时,整个多选结构就视为一个元素,只要其中某个子表达式能够匹配,整个多选结构就匹配成功。多个子表达式之间是或的关系。

3.3 引用分组

  括号不仅仅能把有联系的元素归拢起来并分组,还有其他的作用——使用括号后,正则表达式会保存每个分组真正匹配的文本,等到匹配完成后,通过group(num)之类的方法“引用”分组在匹配时捕获的内容。其中num表示对应括号的编号,括号分组的编号是从左向右计数,从1开始。因为“捕获”了文本,所以这种功能叫做捕获分组(capturing group)。对应的,这种括号叫做捕获型括号

3.3.1 反向引用

英文中不少单词中都有重叠出现的字母,比如shoot或beep,如果希望检查某个单词是否包含重叠出现的字母,该怎么解决?

3.3.2 各种引用的记法

根据前面的介绍,对分组的引用可能出现在三种场合:

3.3.3 命名分组

捕获分组通常用数字编号来标识,但这样有几个问题:

  1. 数字编号不够直观,虽然规则是“从左到右按照开括号出现的顺序计数”,但括号多了难免混淆
  2. 引用时不够方便,有可能出现二义性

未解决这类问题,一些语言和工具提供了命名分组(named grouping),可已经它看作另一种捕获分组,但是标识是容易记忆和辨别的名字,而不是数字编号。

3.3.4 非捕获型分组

补充

上一篇下一篇

猜你喜欢

热点阅读