c# - 如何在 C# 正则表达式中使用内联修饰符?

标签 c# .net regex

如何使用内联修饰符代替 RegexOptions.Option

例如:

Regex MyRegex = new Regex(@"[a-z]+", RegexOptions.IgnoreCase);

如何使用内联字符 i 重写它?

http://msdn.microsoft.com/en-us/library/yd1hzczs.aspx

最佳答案

您可以按如下方式使用内联修饰符:

// case insensitive match
Regex MyRegex = new Regex(@"(?i)[a-z]+");  // case insensitive match

或者,通过添加减号来反转修饰符的含义:

// case sensitive match
Regex MyRegex = new Regex(@"(?-i)[a-z]+");  // case sensitive match

或者,打开和关闭它们:

// case sensitive, then case-insensitive match
Regex MyRegex = new Regex(@"(?-i)[a-z]+(?i)[k-n]+");

或者,您可以使用 mode-modifier span 语法,使用冒号 : 和分组括号,将修饰符的范围限定为该组:

// case sensitive, then case-insensitive match
Regex MyRegex = new Regex(@"(?-i:[a-z]+)(?i:[k-n]+)");

您可以像这样一次性使用多个修饰符 (?is-m:text),或者如果您发现更清晰的 (?i)(?s)( ?-m)text(我不知道)。当您使用开/关切换语法时,请注意修饰符一直有效到下一个开关或正则表达式结束。相反,使用模式修改的跨度,在跨度之后将应用默认行为。

最后:the allowed modifiers in .NET are (使用减号反转模式):

x 允许空格和注释
s 单行模式
m 多行模式
i 不区分大小写
n 仅允许显式捕获(特定于 .NET)

关于c# - 如何在 C# 正则表达式中使用内联修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3542042/

相关文章:

c# - 从 XML 转换为 JSON 时更改属性值

c# - 内部类型是否会损害良好的 API 设计?

.net - 应用程序关闭时通知图标保留在系统托盘中

python - 用于在 python 中检索文本范围的正则表达式

swift - 匹配 "com.project.name"但不包含其他内容

c# - 无法删除该对象,因为在 Entity Framework 5 中的 ObjectStateManager 中找不到它

c# - 在特定时间运行流程的最佳方式

.net - SQL Server 中的 Money 数据类型仅获取两位小数

c# - .NET 4.5 "Any CPU"带有 Perefer 32 位选项 : not work for dlls which have 32 and 64 bit versions with XCopy

javascript - 在javascript中使用正则表达式提取字符串