我有一个像这样的字符串:
"item 1, item 2, item 3"
。"item 1, item 2 and item 3"
。
事实上,将最后一个逗号替换为“and”。谁能帮我解决这个问题吗?
您可以使用此正则表达式:
,([^,]*)$
$re = '/,([^,]*)$/m';
$str = 'item 1, item 2, item 3';
$subst = " and $1";
$result = preg_replace($re, $subst, $str);
利用贪婪来实现这一点:
$text = preg_replace('/(.*),/','$1 and',$text)
这会将所有内容与最后一个逗号匹配,并通过自身替换它(不带逗号)。
不需要捕获组。只需贪婪地匹配字符串中的所有字符,然后在匹配字符串中的最后一个逗号之前,使用
\K
来“忘记”所有先前匹配的字符。这实际上只匹配最后出现的逗号。将逗号替换为空格,然后替换为单词“and”。
代码:(演示)
echo preg_replace('/.*\K,/', ' and', 'item 1, item 2, item 3');
// item 1, item 2 and item 3