使用正则表达式替换字符串中的最后一个逗号

问题描述 投票:0回答:3

我有一个像这样的字符串:

"item 1, item 2, item 3"

我需要的是将其转换为:
"item 1, item 2 and item 3"

事实上,将最后一个逗号替换为“and”。谁能帮我解决这个问题吗?

php regex preg-replace
3个回答
13
投票

您可以使用此正则表达式:

,([^,]*)$

$re = '/,([^,]*)$/m';
$str = 'item 1, item 2, item 3';
$subst = " and $1";

$result = preg_replace($re, $subst, $str);

8
投票

利用贪婪来实现这一点:

$text = preg_replace('/(.*),/','$1 and',$text)

这会将所有内容与最后一个逗号匹配,并通过自身替换它(不带逗号)。


0
投票

不需要捕获组。只需贪婪地匹配字符串中的所有字符,然后在匹配字符串中的最后一个逗号之前,使用

\K
来“忘记”所有先前匹配的字符。这实际上只匹配最后出现的逗号。将逗号替换为空格,然后替换为单词“and”。

代码:(演示

echo preg_replace('/.*\K,/', ' and', 'item 1, item 2, item 3');
// item 1, item 2 and item 3
© www.soinside.com 2019 - 2024. All rights reserved.