代码之家  ›  专栏  ›  技术社区  ›  janoliver

子模式中的正则表达式:或()不工作

  •  0
  • janoliver  · 技术社区  · 16 年前

    我有两个要匹配的案例:要么

    # ... ([0-9]+,[0-9]+) € ... #
    

    # ... (--) ... #
    

    现在,

    # ... (?:(--)|([0-9]+,[0-9]+) €) ... #
    

    它说它不起作用

    Unknown modifier '(' ...
    

    我在php 5.3上使用preg_match_all()。

    以上不是完整的表达,只是摘录!

    3 回复  |  直到 16 年前
        1
  •  0
  •   Tomas    16 年前

    正则表达式工作时不会出错:

     $p = "/(?:(--)|([0-9]+,[0-9]+) €)/";
     echo preg_match($p, "--")."\n";                // outputs 1
     echo preg_match($p, "nomatch")."\n";           // outputs 0
    

    请发布您的PHP代码,以便我们识别问题

        2
  •  0
  •   Gumbo    16 年前

    您需要将普通正则表达式放入分隔符中,以获取 regular expression in PCRE format ,例如, / 作为定界符:

    /(?:(--)|([0-9]+,[0-9]+) €)/
    
        3
  •  0
  •   Randy Sugianto 'Yuku'    16 年前

    你用定界符了吗?

    preg_match_all('#(?:(--)|([0-9]+,[0-9]+) €)#', ...) 
    

    而不是

    preg_match_all('(?:(--)|([0-9]+,[0-9]+) €)', ...) 
    
    推荐文章