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

标签 c# regex

我有一个 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!""";

这是否回答了您的问题?

关于c# - 将扩展正则表达式转换为 .NET 兼容的 RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1349644/

相关文章:

c# - 为什么我的证书没有得到验证?

c# - GPUImage 和 Monotouch 绑定(bind)或替代方案

java - 匹配输入上两个不同位置的正则表达式

regex - 日志文件中的Logstash可选字段

javascript - 正则表达式将Javascript中的字符串拆分为多个字符串的逻辑

c# - 检查对象是否为 C# 中的非特定泛型类型

c# - WebControl 和 IDisposable

c# - 为什么 String.Empty 是无效的默认参数?

javascript - 正则表达式替换字符串中不在引号中的单词

java - 检索给定搜索条件的字符串。括号、引号等