【问题标题】:Using a .net regex in Python在 Python 中使用 .net 正则表达式
【发布时间】:2011-05-05 17:52:52
【问题描述】:

我为Microsoft's .net regex format 编写了一些正则表达式,我想在Linux 机器上的python 程序中使用它们。是否有兼容的库或覆盖它们的方法?如果我必须手工完成,你知道备忘单或指南吗?

【问题讨论】:

    标签: .net python regex pcre


    【解决方案1】:

    .NET 正则表达式中的大部分功能在 Python 中都可用;但是缺少一些东西:

    1. Python 不支持在lookbehinds 中重复变量,只支持固定长度。
    2. Python 对命名捕获使用不同的语法。
    3. Python 匹配 Unicode 字符的方式不同。
    4. Python 没有原子组 (?>...) 或所有格量词 ++*+?+
    5. 在 Python 中,对正则表达式使用 r"..." 原始字符串,否则会遇到反斜杠。

    综合list of differences can be found here

    如果您需要经常进行正则表达式转换,RegexBuddy 可以为您完成(当然,只要您不使用目标正则表达式引擎不具备的功能)。

    【讨论】:

    • 等一下,我有 RegexBuddy 的副本。这个功能叫什么?
    • @Rook:从 C# 代码中复制字符串,打开 RegexBuddy,单击“粘贴”按钮,“粘贴自...”和“从 C# 字符串粘贴正则表达式”,然后转到“使用”选项卡并选择 Python。
    【解决方案2】:

    re module 的文档涵盖了 Python 正则表达式语法。 FWIW,语法非常相似,除了替换。

    【讨论】:

      【解决方案3】:

      在实现方面,我认为 CLR 和 Python 正则表达式引擎非常接近,比 Perl 或 PCRE 等其他语言更接近。例如,我使用Expresso 来创建和测试复杂的正则表达式,我后来适应了 Python 代码。

      也就是说,我认为我从未见过真正的转换器,但由于它们非常相似,因此手动转换它们应该相对容易(同样,比我们讨论其他实现更容易) .

      This 页面在不同引擎之间进行了很好的比较,尽管它关注的是功能而不是语法的相似性。

      【讨论】:

        【解决方案4】:

        您确定不兼容吗?至少对于正则表达式中的基本到中级的东西,所有的实现几乎都同意语法,除了可能是否应该转义括号。

        【讨论】:

        • 是的,我 150% 确定这些正则表达式在尝试使用它们时会引发异常。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        • 2010-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多