VB.net 杂项结构

2020-08-19 17:26 更新

正则表达式中的杂项结构

.NET 中的正则表达式包括三个其他语言构造。 其中一个使你可以在正则表达式模式中间启用或禁用特定匹配选项。 其余两个使你可以在正则表达式中包含注释。

内联选项

可以使用语法为正则表达式的一部分设置或禁用特定模式匹配选项

(?imnsx-imnsx)

在问号后列出要启用的选项,在负号后列出要禁用的选项。 下表对每个选项进行了描述。

内联选项
选项描述
i不区分大小写的匹配。
m多行模式。
n仅显式捕获。 (圆括号不充当捕获组。)
s单行模式。
x忽略未转义空格,并允许 x 模式注释。

内联注释

(?# comment) 构造可用于在正则表达式中添加内联注释 。 正则表达式引擎在模式匹配中不使用注释的任何部分,尽管注释仍包含在 Regex.ToString 方法返回的字符串中。 该注释在第一个右括号处终止。

下面的示例重复了上一部分的示例中的第一个正则表达式模式。 它将两个内联注释添加到该正则表达式,以指示比较是否区分大小写。 正则表达式模式 \b((?# case-sensitive comparison)D\w+)\s(?ixn)((?#case-insensitive comparison)d\w+)\b 按以下方式定义。

内联注释
模式描述
\b在单词边界处开始。
(?# case-sensitive comparison)注释。 它不影响模式匹配行为。
(D\w+)匹配后跟一个或多个单词字符的大写“D”。 这是第一个捕获组。
\s与空白字符匹配。
(?ixn)从此处起,使比较不区分大小写,仅进行显式捕获,以及忽略正则表达式模式中的空格。
(?#case-insensitive comparison)注释。 它不影响模式匹配行为。
(d\w+)匹配后跟一个或多个单词字符的大写或小写“d”。 这是第二个捕获组。
\b与字边界匹配。


行尾注释

数字符号 (#) 标记 x 模式注释,即从正则表达式模式末尾的未转义 # 字符开始一直延续到行末。 若要使用此构造,必须启用 x 选项(通过内联选项),或在实例化 Regex 对象或调用静态 Regex 方法时向 option 参数提供 RegexOptions.IgnorePatternWhitespace 值。

下面的示例说明行尾注释构造。 它确定字符串是否为包含至少一个格式项的复合格式字符串。 下表描述了正则表达式模式中的构造:

\{\d+(,-*\d+)*(\:\w{1,4}?)*\}(?x) # Looks for a composite format item.

行尾注释
模式描述
\{匹配左大括号。
\d+匹配一个或多个十进制数字。
(,-*\d+)*与零个或一个后跟一个可选负号、再后跟一个或多个十进制数字的逗号匹配。
(\:\w{1,4}?)*与零个或一个后跟一到四个(但尽可能少)空白字符的冒号匹配。
\}匹配右大括号。
(?x)启用忽略模式空格选项,以便识别行尾注释。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号