正则表达式 - 如何将两个组连接到一个值?

时间:2014-03-13 15:06:28

标签: php regex preg-match

我再次遇到巨魔的问题。 有类似的情况:

<?php 
    [...]
    $string="IchigoKurosaki FirstRandomTroll NatsuDragneel SecondRandomTroll NarutoUzumaki TrollMaster";
    //[do some magic here]
    //$outputArray = {
        [1] => "FirstRandomTroll SecondRandomTroll",
        [2] => "TrollMaster"
    }
?>

我想用preg_match来捕捉群体巨魔。我有3组:

(firstRandomTroll), (secondRandomTroll), and (TrollMaster)

保存为$output

[1] => "first...", [2]=> "second...", and [3]="TrollMaster".

这是否可以仅使用一个正则表达式将[1]和[2]连接到一个值而已?

1 个答案:

答案 0 :(得分:0)

我写了一个正则表达式来捕获字符串中的每个巨魔:

$string="IchigoKurosaki FirstRandomTroll NatsuDragneel SecondRandomTroll NarutoUzumaki TrollMaster";

preg_match_all("([a-zA-Z]*Troll[a-zA-Z]*)", $string, $array);

print_r($array);

输出:

Array
(
    [0] => Array
        (
            [0] => FirstRandomTroll
            [1] => SecondRandomTroll
            [2] => TrollMaster
        )
)

巨魔现在被孤立了(那是更好的,对吧?)

现在你可以对数组的元素执行操作以重新组合它们(听起来像个坏主意,这是我们正在谈论的巨魔......)。请注意这个数组的结构。

现在,如果你真的,真的想一次抓住两个巨魔,我认为一个正则表达式是不可能的。你可以重写它有两个捕获组,但是不会立即在一个字符串中输出两个巨魔......