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

d6kp6zgx  于 2023-10-22  发布在  其他
关注(0)|答案(3)|浏览(143)

我有一个字符串像这样:
"item 1, item 2, item 3"
我需要的是将其转换为:
"item 1, item 2 and item 3"
最后一个逗号换成“and”。有人能帮我吗?

lpwwtiir

lpwwtiir1#

你可以使用这个正则表达式:,([^,]*)$,它匹配最后一个逗号和它后面的文本。

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

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

mznpcxlj2#

用贪婪来实现这一点:

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

这将所有内容匹配到最后一个逗号,并通过它本身w/o逗号替换它。

um6iljoc

um6iljoc3#

不需要捕获组。只需要匹配字符串中的所有字符,然后在匹配字符串中的最后一个逗号之前,使用\K来“忘记”之前匹配的所有字符。这实际上只匹配最后出现的逗号。将逗号改为空格,然后是“and”。
代码:(Demo

echo preg_replace('/.*\K,/', ' and', 'item 1, item 2, item 3');
// item 1, item 2 and item 3

相关问题