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

使用preg-split-DELIM-CAPTURE进行preg-split

  •  0
  • Chris  · 技术社区  · 14 年前

    我希望基于正则表达式拆分字符串,但我也有兴趣保留拆分的文本:

    php > var_dump(preg_split("/(\^)/","category=Telecommunications &     CATV^ORcategory!=ORtest^caused_byISEMPTY^EQ"), null, PREG_SPLIT_DELIM_CAPTURE);
    array(4) {
      [0]=> string(34) "category=Telecommunications & CATV"
      [1]=> string(18) "ORcategory!=ORtest"
      [2]=> string(16) "caused_byISEMPTY"
      [3]=> string(2) "EQ"
    }
    NULL
    int(2)
    

    我不明白的是为什么我没有得到一个数组,比如:

    array(4) {
      [0]=> "category=Telecommunications & CATV"
      [1]=> "^"
      [2]=> "ORcategory!=ORtest"
      [3]=> "^"
      [4]=> "caused_byISEMPTY"
      [5]=> "^"
      [6]=> "EQ"
    }
    

    此外,我如何更改正则表达式以匹配“^”或“^”。我很难用一个lookbehind断言,比如:

    $regexp = "/(?<=\^)OR|\^/"; 
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Dr.Molle    14 年前

    这将按预期工作:

    var_dump(preg_split('/(\^)/','category=Telecommunications &     CATV^ORcategory!=ORtest^caused_byISEMPTY^EQ', -1, PREG_SPLIT_DELIM_CAPTURE));
    

    附加问题:

    /(\^OR|\^)/