PHP正则表达式马赫之前和之后的特定单词

用户名

我有一个字符串,其数据如下所示:

$string = '
    foo=bar
    badge_name_foo=foo
    bar_badge_name=bar
    bar=baz
';

我想匹配所有*_badge_namebadge_name_*字符串。

我使用的正则表达式是这样的: preg_match_all('~(?:(\w+)_)?badge_name(?:_(\w+))?~', $string, $matches, PREG_SET_ORDER);

结果是:

Array
(
    [0] => Array
        (
            [0] => badge_name_foo
            [1] => 
            [2] => foo
        )

    [1] => Array
        (
            [0] => bar_badge_name
            [1] => bar
        )

)

*_badge_name工作正常,但是badge_name_*每次都有一个空值吗?现在我该如何删除preg_match_all

预期结果应为:

Array
(
    [0] => Array
        (
            [0] => badge_name_foo
            [1] => foo
        )

    [1] => Array
        (
            [0] => bar_badge_name
            [1] => bar
        )

)
维克多·史翠比维

看来您需要使用分支重设功能

分支重置组内的替代方案共享相同的捕获组。语法是(?|regex)哪里(?|打开组,regex是任何正则表达式。如果您不使用任何替代或捕获分支重置组内的组,则其特殊功能将不起作用。然后,它作为一个非捕获组

使用

(?|(\w+)_badge_name|badge_name_(\w+))
^^^

请参阅regex演示

PHP演示

$re = '/(?|(\w+)_badge_name|badge_name_(\w+))/';
$str = 'foo=bar
badge_name_foo=foo
bar_badge_name=bar
bar=baz';
preg_match_all($re, $str, $matches);
print_r($matches);

结果:

Array
(
    [0] => Array
        (
            [0] => badge_name_foo
            [1] => bar_badge_name
        )

    [1] => Array
        (
            [0] => foo
            [1] => bar
        )

)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式:在特定单词之前和之后找到一些

正则表达式在字符串中的任何特定单词之前和之后查找特定单词

在 JavaScript 正则表达式中获取特定单词之前和之后的两个单词

Python使用正则表达式在特定单词列表中提取3个单词之前和之后的3个单词

正则表达式查找以特定单词开头、包含和结尾的模式 (PHP)

正则表达式在特定单词之后选择单词

正则表达式匹配一个单词,但前提是该单词不位于另一个特定单词之前或之后

正则表达式在字符串中的特定单词之后查找

正则表达式,用于删除特定单词之后的重复斜杠(VBScript / Classic ASP)

使用正则表达式在特定单词之后获得值的多次出现

使用正则表达式在特定单词之后找到缩写

使用正则表达式在特定单词之前提取数字

正则表达式在特定单词之前的行上查找/替换字符

正则表达式匹配特定单词之前的确切短语

正则表达式匹配特定单词

正则表达式完全匹配特定单词

否定正则表达式中的特定单词

特定单词的Python正则表达式

正则表达式排除特定单词

包含特定单词的正则表达式

不以特定单词结尾的正则表达式

正则表达式捕获短语,加上之前的单词和之后的单词

正则表达式从列表中查找单词,当特定单词未出现之前3个单词

如何使用正则表达式和PHP向特定单词添加其他标签

正则表达式仅在以和包含或以特定单词结尾时才匹配

正则表达式表示开始和结束特定单词[无重复]

使用正则表达式从文本文件中在Python中的特定单词之后查找单词

PHP正则表达式提取匹配标记包含特定单词的地方

php,正则表达式preg_match特定单词0或1次