regex 获取特定单词后面的未知单词

6ojccjat  于 2023-05-01  发布在  其他
关注(0)|答案(5)|浏览(187)

我需要提取一个紧跟着一个单词然后是逗号的未知单词。更准确地说,我想得到post后面的单词,后面跟着一个逗号,然后是一个空格。
示例字符串1:

admin wrote a new post, FIRE 2 days, 2 hours ago

示例字符串2:

admin posted an update 2 days, 3 hours ago

只有第一个示例字符串符合条件,并且应该返回单词FIRE

voj3qocg

voj3qocg1#

使用正则表达式

$string="admin wrote a new post, FIRE 2 days, 2 hours ago";
$result=preg_split('/post,/',$string);
if(count($result)>1){
$result_split=explode(' ',$result[1]);
print_r($result_split[1]);
}

这个输出FIRE
LIVE DEMO
另一条路

$string="admin wrote a new post, FIRE 2 days, 2 hours ago";
$result=preg_match_all('/(?<=(post,))(\s\w*)/',$string,$matches);
print_r($matches[0]);

Live Demo

hlswsv35

hlswsv352#

只需使用explode()方法,定位单词post的位置,并提取下一个单词。

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);

foreach( $pieces as $key => $value )
{
if($pieces[$key] == 'post' )
{
echo $pieces[$key+1];
break;
}
}

或者,Maven方法:

echo $pieces[array_search('post', $pieces)+1];
5n0oy7gb

5n0oy7gb3#

为此使用正则表达式。

$string="admin wrote a new post, FIRE 2 days, 2 hours ago";
preg_match('/(?<=post, )\S+/i', $string, $match);
echo $match[0];

希望这将为您工作。

pdsfdshx

pdsfdshx4#

查找紧跟在“post”-逗号-空格之后的单词是一项最好留给正则表达式的任务。
在模式中,在post之前使用\b(以及后面的逗号),以确保只匹配整个单词“post”。
使用\K重新启动完整的字符串匹配--避免回头将提高模式效率。
代码:(Demo

if (preg_match('/\bpost, \K\S+/', $string, $match)) {
    echo $match[0];
}

或者

$string = preg_replace('/.*\bpost, (\S+).*/', '$1', $string, 1, $count);
if ($count) {
    echo $string;
}
xfyts7mz

xfyts7mz5#

  • 拆分字符串并放入数组
  • 获取“post”的索引
  • 获取位置index+1中的数组的值

相关问题