VB.net 杂项结构
正则表达式中的杂项结构
.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) | 启用忽略模式空格选项,以便识别行尾注释。 |
更多建议: