正则表达式提取foo,bar,baz和逻辑运算符

时间:2013-09-04 06:38:24

标签: php regex

String Parsing

foo_and_bar_and_baz_or_doe

预期结果:foo,bar,baz和doe以及和,和或。

我试过了/(.*?)(_and_|_or_)/i,但它跳过最后一个。

实际上是刺痛

having_tag_slugs_and_having_category1_slug_and_having_category2_slug_or_having_category3_slug

out put,我正在寻找

having_tag_slugs
having_category1_slug
having_category2_slug
having_category3_slug

_and_
_and_
_or_
''

3 个答案:

答案 0 :(得分:1)

$a="foo_and_bar_and_baz_or_doe";
$c=explode("_",$a);
print_r($c);

答案 1 :(得分:1)

您可以尝试以下正则表达式 -

/(.*?)(_and_|_or_|$)/im

希望有所帮助。让我知道它是怎么回事:))

答案 2 :(得分:1)

preg_split

怎么样?
$str = 'having_tag_slugs_and_having_category1_slug_and_having_category2_slug_or_having_category3_slug';
$arr = preg_split('/(_and_|_or_)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($arr);

<强>输出:

Array
(
    [0] => having_tag_slugs
    [1] => _and_
    [2] => having_category1_slug
    [3] => _and_
    [4] => having_category2_slug
    [5] => _or_
    [6] => having_category3_slug
)