0

FOOの後に各「単語」(スペースが境界)をそれぞれ取得したいと思います

   FOO foo bar foo.bar

nb FOOの前にスペースがあるかもしれません

4

6 に答える 6

0

preg_match_all():

/(?:.*FOO | )([^ ]+)/

戻り値:

Array
(
    [0] => ...
    [1] => Array
    (
        [0] => foo
        [1] => bar
        [2] => foo.bar
    )
)
于 2013-10-22T16:02:40.687 に答える
0

FOO (([\w\.]+) ?)+

内側の括弧は、各「単語」と一致する必要があります。「単語」に他の特殊記号を含めることができる場合は、それらをリストに追加する必要があります[\w\.]

于 2013-10-22T15:37:08.013 に答える
0

これを試すことができます:

preg_match_all('~(?:^(?>[^F]++|F(?!OO\h))*+FOO\h++|\h++)\K\H++~', $str, $matches);
print_r($matches);
于 2013-10-22T16:17:50.430 に答える
0

これは preg_match() と destroy() を使った簡単な方法です。

$string = "blah blah     FOO foo bar foo.bar";
preg_match("#.*FOO +(.+ ?)+#ms",$string,$m);
$words = explode(" ",$m[1]);
print_r($words);

Array
(
    [0] => foo
    [1] => bar
    [2] => foo.bar
)
于 2013-10-22T15:38:02.377 に答える
0

これを試すことができます:

$str = 'FOO foo bar foo.bar';
$words = explode(' ',preg_replace('/^(( *)FOO( *))/', '', $str));

これで、「foo」、「bar」、「foo.bar」の 3 つの要素を持つ配列 ($words) ができました。私が理解したと思います!

于 2013-10-22T15:37:27.007 に答える