`

正则表达式-分组构造

 
阅读更多


正则表达式-分组构造

 

分组构造使您可以捕获子表达式组并提高具有非捕获预测先行和回顾后发修饰符的正则表达式的效率。下表描述了正则表达式分组构造。

分组构造说明
(   ) 捕获匹配的子字符串(或非捕获组;有关详细信息,请参见正则表达式选项中的 ExplicitCapture 选项)。使用 () 的捕获根据左括号的顺序从 1 开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式匹配的文本。
(?<name>   ) 将匹配的子字符串捕获到一个组名称或编号名称中。用于 name 的字符串不能包含任何标点符号,并且不能以数字开头。可以使用单引号替代尖括号,例如 (?'name')
(?<name1-name2) 平衡组定义。删除先前定义的 name2 组的定义并在 name1 组中存储先前定义的 name2 组和当前组之间的间隔。如果未定义 name2 组,则匹配将回溯。由于删除 name2 的最后一个定义会显示 name2 的先前定义,因此该构造允许将 name2 组的捕获堆栈用作计数器以跟踪嵌套构造(如括号)。在此构造中,name1 是可选的。可以使用单引号替代尖括号,例如 (?'name1-name2')
(?:   ) 非捕获组。
(?imnsx-imnsx:   ) 应用或禁用子表达式中指定的选项。例如,(?i-s: ) 将打开不区分大小写并禁用单行模式。有关详细信息,请参见正则表达式选项
(?=   ) 零宽度正预测先行断言。仅当子表达式在此位置的右侧匹配时才继续匹配。例如,\w+(?=\d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。
(?!   ) 零宽度负预测先行断言。仅当子表达式不在此位置的右侧匹配时才继续匹配。例如,\b(?!un)\w+\b 与不以 un 开头的单词匹配。
(?<=   ) 零宽度正回顾后发断言。仅当子表达式在此位置的左侧匹配时才继续匹配。例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
(?<!   ) 零宽度负回顾后发断言。仅当子表达式不在此位置的左侧匹配时才继续匹配。
(?>   ) 非回溯子表达式(也称为“贪婪”子表达式)。该子表达式仅完全匹配一次,然后就不会逐段参与回溯了。(也就是说,该子表达式仅与可由该子表达式单独匹配的字符串匹配。)

命名捕获根据左括号的从左到右的顺序按顺序编号(与非命名捕获类似),但在对所有非命名捕获进行计数之后才开始对命名捕获进行编号。例如,模式 ((?<One>abc)/d+)?(?<Two>xyz)(.*) 按编号和名称产生下列捕获组。(编号为 0 的第一个捕获总是指整个模式)。

编号名称模式
0 0(默认名称) ((?<One>abc)/d+)?(?<Two>xyz)(.*)
1 1(默认名称) ((?<One>abc)/d+)
2 2(默认名称) (.*)
3 1 (?<One>abc)
4 2 (?<Two>xyz)
分享到:
评论

相关推荐

    正则表达式转换工具

    综上所述,"正则表达式转换工具"是处理文本数据的强大辅助,它简化了正则表达式的构造过程,使得非专业人士也能方便地利用正则表达式的强大功能。对于编程人员来说,熟练掌握正则表达式不仅可以提高工作效率,还能...

    vb正则表达式实例(正则表达式测试程序)

    - **构造函数**:创建`Regex`对象时,需要传入一个正则表达式字符串,如`New Regex("模式")`。 - **方法**: - `Match`:执行一次匹配,返回`Match`对象,如果未找到匹配,返回`Match.Empty`。 - `Matches`:...

    使用正则表达式拆分字符串

    - **效率**:如果正确构造,正则表达式拆分可以快速有效地处理大量文本。 - **复杂性**:对于包含特殊字符和结构的字符串,正则表达式提供了更强大的处理能力。 5. 注意事项 - 当正则表达式中包含贪婪模式时,...

    易语言正则表达式文本替换

    例如,"子程序_正则文本替换"可能就是一个易语言中用于执行正则表达式替换的子程序,它接收输入的文本、正则表达式模式和替换字符串,然后返回经过替换操作的新文本。 1. **正则表达式基础** - **元字符**:如`.`...

    精通正则表达式-第三版-简体中文版

    1. **基本元素**:正则表达式由一些基本字符和构造组成,如点号(.)表示任意单个字符,星号(*)表示前面的字符可以重复零次或多次,加号(+)表示至少一次,问号(?)表示零次或一次。 2. **字符类**:方括号([])...

    怪物正则表达式--需要.netfromwork2.0

    正则表达式语法本身包括一系列特殊字符和构造,比如: - **字符集**: `[abc]`表示匹配任何一个括号内的字符。 - **量词**: `{n}`表示匹配前面的字符恰好n次,`{n,}`表示至少n次,`{n,m}`表示n到m次。 - **断言**: `^...

    正则表达式(日期校验)

    ### 正则表达式在日期校验中的应用 #### 一、引言 在软件开发过程中,日期格式的校验是非常常见的需求之一。利用正则表达式进行日期格式的校验,不仅可以提高代码的可读性和简洁性,还能有效地确保输入数据的准确...

    正则表达式-正则表达式字符参考

    ### 正则表达式字符参考详解 #### 一、引言 正则表达式是一种强大的文本处理工具,它能够帮助用户查找、替换以及提取符合特定模式的字符串。无论是日常的数据清洗还是复杂的文本处理任务,正则表达式都能提供高效且...

    正则表达式转NFA实现

    5. **括号运算符**:“( )”用于分组,可以先将括号内的正则表达式转换为NFA,然后在外部进行其他运算。 6. **结束构造**:最后,所有匹配的路径都应到达一个或多个接受状态。这些状态不接受任何字符,但可以作为终...

    正则表达式之道-ppt

    - 分组构造:如`()`,用于捕获和操作子表达式。 - 正则表达式选项:如`i`, `m`,改变匹配的行为,如大小写不敏感或多行模式。 - 替换构造:在替换操作中使用特殊符号,如`$number`, `${name}`。 - 选择构造:使用`|`...

    精通正则表达式中文版英文版_中文版为扫描版

    对于初学者,书中会引导他们理解正则表达式的构造和工作原理,逐步建立起对模式匹配的直觉。而对于经验丰富的开发者,它提供了一套全面的参考,帮助解决复杂的问题,提升在实际项目中的应用能力。 正则表达式不仅...

    正则表达式-基础篇1

    ### 正则表达式基础详解 ...本文详细介绍了创建正则表达式的基本方法、常用的文本模式以及选择与分组的用法,为读者提供了全面的基础知识。通过学习这些概念,可以帮助开发者更好地理解和应用正则表达式。

    源码(精通正则表达式&实战正则表达式)

    在JavaScript环境中,正则表达式与其他语言有所不同,它既支持字面量表示法(如`/pattern/flags`),也支持构造函数表示法(如`new RegExp('pattern', 'flags')`)。此外,JavaScript提供了`test()`、`match()`、`...

    java_zhengze.rar_正则表达式_正则表达式 java

    正则表达式中的特殊构造,如`|`表示选择(或),`(?i)`表示不区分大小写,`(?'name'...)`用于命名捕获组,这些都是编写复杂正则表达式时的重要工具。 在实际应用中,我们经常需要处理用户输入,这时可以使用正则...

    正则表达式(里面包含大量的正则表达式)

    - 在JavaScript中,通过 `new RegExp()` 构造函数或直接在字符串前加 `//` 创建正则表达式。 - Python中的 `re` 模块提供了丰富的正则表达式操作函数,如 `re.search()`,`re.findall()` 等。 - Java中的 `...

    正则表达式.rar 正则表达式.rar

    掌握正则表达式需要时间和实践,可以从简单的模式开始,逐渐学习更复杂的构造。理解元字符、量词和分组是基础,然后可以通过在线测试工具(如Regex101、RegExr)进行实验,逐步提高对正则表达式的理解。 在实际应用...

    正则表达式教程合集(各种语言的,超全)

    JavaScript的正则表达式有两种创建方式:字面量(/pattern/flags)和构造函数(new RegExp('pattern', 'flags'))。常见的标志有`g`(全局搜索)、`i`(忽略大小写)和`m`(多行模式)。 VBScript(Visual Basic ...

    SQL 语法分析,正则表达式解析C#文件;正则表达式实现的语法分析引擎

    在SQL Server中,可以使用`LIKE`或`PATINDEX`函数进行简单的模式匹配,但正则表达式提供了更复杂的匹配规则,如贪婪与非贪婪匹配、分组、反向引用等。这使得在SQL查询中处理复杂的数据过滤和转换变得更加灵活。 接...

    正则表达式验证器,验证常用的编程语言的正则表达式

    在编程中,正确构造和理解正则表达式至关重要,因为它们能帮助我们高效地处理字符串数据。"正则表达式验证器"是一个实用工具,它允许用户输入自定义的正则表达式,并通过提供测试用例来验证该表达式的正确性。 这个...

Global site tag (gtag.js) - Google Analytics