代码之家  ›  专栏  ›  技术社区  ›  Julius F

正则表达式在PHP和Python之间有区别吗

  •  12
  • Julius F  · 技术社区  · 14 年前

    我发现这个帖子: Python Regex vs PHP Regex

    我开始将我的一些旧PHP代码转换为python(由于g的appengine等),现在我想知道regex是否是100%可转换的,通过简单的copy&粘贴。

    当做,

    6 回复  |  直到 7 年前
        1
  •  11
  •   Felix Kling    14 年前

    Perl Compatible Regular Expressions 语法,所以应该差不多。了解可能的 differences

    delimiters .

        2
  •  11
  •   Tim Pietzcker    11 年前

    它们大部分是兼容的。不过,除了语法不同之外,还有一些不同之处( /regex/ re.compile(r"regex")

    1. PCRE支持 \Q...E 为了避开元字符,Python没有。
    2. PCRE支持 \cA-\cZ 控制字符匹配,Python没有。
    3. 连字符 [\d-z] [a-\d]
    4. \z (字符串结尾),Python没有,只是 \Z
    5. \b 将只在PCRE中的ASCII字符周围匹配单词边界,在Python中,如果设置了该选项,它可以独立地匹配区域设置。
    6. \1 在PCRE中捕获圆括号之前的反向引用,在Python中不能。
    7. 不能在正则表达式中关闭模式修饰符( (?-s) 在Python中。
    8. 你不会得到原子分组 (?>...) .++
    9. lookback在PCRE中可以是有限长度,在Python中必须是固定长度。
    10. 根本没有 \G 模式(上一个匹配的位置)。
    11. 在Python中没有条件匹配,仅在PCRE中: (?(?=regex)then|else) .
    12. \x1234 p{L} 以及其他Unicode属性匹配。在PHP中,这取决于如何配置/编译它。
    13. [:alpha:]

    收集自 regular-expressions.info ,省去了一些更深奥的东西。但不多。

    寓意:买 RegexBuddy 用它来翻译正则表达式。

        3
  •  1
  •   Andrei Sosnin    14 年前

    如果我没弄错的话,这两个实现都是基于Perl正则表达式的。

        4
  •  1
  •   mikegreenberg    14 年前

    不确定答案是否正确,但我发现了一个很好的工具,可以帮助您进行测试。

    http://re.dabase.com/

    干杯!

        5
  •  1
  •   Julius F    14 年前

    经过很快的研究,我发现主要的区别是:

    / REGEX / # "/" in front and at the end
    

    蟒蛇 (没有分隔符)

    REGEX # no surrounding by any characters
    
        6
  •  1
  •   tplaner    14 年前

    如果你主要使用 preg_*

    你可以阅读 PHP's regular expressions here Python's regular expressions here 找出一些更具体的东西。

    好问题,但很难给出一个完整的答案,因为有很多变量。