用于提取 foo、bar、baz 和逻辑运算符的正则表达式


regular expression to extract foo, bar, baz and logical operator

>字符串解析

foo_and_bar_and_baz_or_doe

预期结果: foo, bar, baz 和 doe 以及 and, and or

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

其实刺痛是

having_tag_slugs_and_having_category1_slug_and_having_category2_slug_or_having_category3_slug

放出来,我正在寻找的是

having_tag_slugs
having_category1_slug
having_category2_slug
having_category3_slug
_and_
_and_
_or_
''

你可以试试下面的正则表达式——

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

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

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

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
)