“正则表达式 非捕获分组”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
(建立内容为“https://www.bilibili.com/video/BV1Eq4y1E79W/?p=14”的新页面)
 
第1行: 第1行:
 
https://www.bilibili.com/video/BV1Eq4y1E79W/?p=14
 
https://www.bilibili.com/video/BV1Eq4y1E79W/?p=14
 +
{| class="wikitable"
 +
!常用分组构造形式
 +
!说明
 +
|-
 +
|(?:pattern)
 +
|匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。
 +
这对于用 "or"字符(|)组合模式部件的情况很有用。
 +
 +
例如,'industr(?:y|ies)' 是比 'industry|industries' 更经济的表达式。
 +
|-
 +
|(?=pattern)
 +
|它是一个非捕获匹配。
 +
例如,'Windows (?=95|98|NT|2000)' 匹配 "Windows 2000" 中的 "Windows",
 +
 +
但不匹配 "Windows 3.1" 中的 "Windows"。
 +
|-
 +
|(?!pattern)
 +
|该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。
 +
它是一个非捕获匹配。例如,'Windows (?!95|98|NT|2000)' 匹配 "Windows 3.1" 中的 "Windows",但不匹配 "Windows 2000"中的 "Windows"
 +
|}

2022年11月18日 (五) 11:54的版本

https://www.bilibili.com/video/BV1Eq4y1E79W/?p=14

常用分组构造形式 说明
(?:pattern) 匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。

这对于用 "or"字符(|)组合模式部件的情况很有用。

例如,'industr(?:y|ies)' 是比 'industry|industries' 更经济的表达式。

(?=pattern) 它是一个非捕获匹配。

例如,'Windows (?=95|98|NT|2000)' 匹配 "Windows 2000" 中的 "Windows",

但不匹配 "Windows 3.1" 中的 "Windows"。

(?!pattern) 该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。

它是一个非捕获匹配。例如,'Windows (?!95|98|NT|2000)' 匹配 "Windows 3.1" 中的 "Windows",但不匹配 "Windows 2000"中的 "Windows"