Skip to main content
 首页 » 编程设计

c#之将扩展正则表达式转换为 .NET 兼容的 RegEx

2024年02月24日34soundcode

我有一个 RegEx,它在 *NIX 系统和支持扩展正则表达式 (ERE) 的语言上运行良好。我还没有找到支持 ERE 的免费 .NET 库,我也没有幸运地尝试将其转换为非 ERE 并获得相同的结果。这是正则表达式:

^\+(<{7} \.|={7}$|>{7} \.) 

背景:RegEx 的目的是识别给定字符串是否具有来自 Unresolved 颠覆合并的标记。

请您参考如下方法:

It looks to me像 ERE 语法大部分向上兼容 .NET 的正则表达式风格,就像它与大多数其他“Perl 兼容”风格(Perl、PHP、Python、JavaScript、Ruby、Java...)一样。换句话说,您可以在 ERE 正则表达式中执行的任何操作,也应该能够在相同的 .NET 正则表达式中执行。当然是你的例子:

^\+(<{7} \.|={7}$|>{7} \.) 

在 .NET 中的含义与在 ERE 中的含义相同。我能看到的唯一主要异常(exception)是在 POSIX bracket expressions 区域。 ; .NET 遵循 Unicode 标准。

当您去应用正则表达式时,事情就会真正变得不同。在 C# 中,您可以像这样应用该正则表达式:

string result = Regex.Match(targetString, @"^\+(<{7} \.|={7}$|>{7} \.)").Value; 

C# 的 verbatim strings 让您不必像在某些其他语言的字符串文字中那样转义反斜杠;您只需将引号加倍即可转义引号:

@"He said, ""Look out!"""; 

这是否回答了您的问题?