我需要提取一个紧跟着一个单词然后是逗号的未知单词。更准确地说,我想得到post后面的单词,后面跟着一个逗号,然后是一个空格。示例字符串1:
post
admin wrote a new post, FIRE 2 days, 2 hours ago
示例字符串2:
admin posted an update 2 days, 3 hours ago
只有第一个示例字符串符合条件,并且应该返回单词FIRE。
FIRE
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]); }
这个输出FIRELIVE 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
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];
5n0oy7gb3#
为此使用正则表达式。
$string="admin wrote a new post, FIRE 2 days, 2 hours ago"; preg_match('/(?<=post, )\S+/i', $string, $match); echo $match[0];
希望这将为您工作。
pdsfdshx4#
查找紧跟在“post”-逗号-空格之后的单词是一项最好留给正则表达式的任务。在模式中,在post之前使用\b(以及后面的逗号),以确保只匹配整个单词“post”。使用\K重新启动完整的字符串匹配--避免回头将提高模式效率。代码:(Demo)
\b
\K
if (preg_match('/\bpost, \K\S+/', $string, $match)) { echo $match[0]; }
或者
$string = preg_replace('/.*\bpost, (\S+).*/', '$1', $string, 1, $count); if ($count) { echo $string; }
xfyts7mz5#
5条答案
按热度按时间voj3qocg1#
使用正则表达式
这个输出FIRE
LIVE DEMO
另一条路
Live Demo
hlswsv352#
只需使用explode()方法,定位单词post的位置,并提取下一个单词。
或者,Maven方法:
5n0oy7gb3#
为此使用正则表达式。
希望这将为您工作。
pdsfdshx4#
查找紧跟在“post”-逗号-空格之后的单词是一项最好留给正则表达式的任务。
在模式中,在
post
之前使用\b
(以及后面的逗号),以确保只匹配整个单词“post”。使用
\K
重新启动完整的字符串匹配--避免回头将提高模式效率。代码:(Demo)
或者
xfyts7mz5#