我想在FOO之后抓住每个"单词"(空格是边界)
FOO foo bar foo.bar
注:注:FOO 之前可能有空格
FOO ((['w'.]+) ?)+
内括号应与每个"单词"匹配。如果"单词"可以包含任何其他特殊符号,则需要将它们添加到列表中['w'.]
。
你可以试试这个:
$str = 'FOO foo bar foo.bar';
$words = explode(' ',preg_replace('/^(( *)FOO( *))/', '', $str));
现在,您有一个包含 3 个元素的数组 ($words:"foo"、"bar" 和 "foo.bar"。我希望我明白!
这是使用 preg_match() 和 explode() 的简单方法。
$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
)
您也可以尝试这样的事情,假设 FOO 在字符串的开头始终是 4 个字符(包括空格)。
$string = ' FOO foo bar foo.bar';
$everything_after_FOO = explode(' ', substr(trim($string), 4));
带preg_match_all()
:
/(?:.*FOO | )([^ ]+)/
返回:
Array
(
[0] => ...
[1] => Array
(
[0] => foo
[1] => bar
[2] => foo.bar
)
)
你可以试试这个:
preg_match_all('~(?:^(?>[^F]++|F(?!OO'h))*+FOO'h++|'h++)'K'H++~', $str, $matches);
print_r($matches);