我有一个字符串像这样:"item 1, item 2, item 3"。我需要的是将其转换为:"item 1, item 2 and item 3"。最后一个逗号换成“and”。有人能帮我吗?
"item 1, item 2, item 3"
"item 1, item 2 and item 3"
lpwwtiir1#
你可以使用这个正则表达式:,([^,]*)$,它匹配最后一个逗号和它后面的文本。
,([^,]*)$
$re = '/,([^,]*)$/m'; $str = 'item 1, item 2, item 3'; $subst = " and $1"; $result = preg_replace($re, $subst, $str);
mznpcxlj2#
用贪婪来实现这一点:
$text = preg_replace('/(.*),/','$1 and',$text)
这将所有内容匹配到最后一个逗号,并通过它本身w/o逗号替换它。
um6iljoc3#
不需要捕获组。只需要匹配字符串中的所有字符,然后在匹配字符串中的最后一个逗号之前,使用\K来“忘记”之前匹配的所有字符。这实际上只匹配最后出现的逗号。将逗号改为空格,然后是“and”。代码:(Demo)
\K
echo preg_replace('/.*\K,/', ' and', 'item 1, item 2, item 3'); // item 1, item 2 and item 3
3条答案
按热度按时间lpwwtiir1#
你可以使用这个正则表达式:
,([^,]*)$
,它匹配最后一个逗号和它后面的文本。mznpcxlj2#
用贪婪来实现这一点:
这将所有内容匹配到最后一个逗号,并通过它本身w/o逗号替换它。
um6iljoc3#
不需要捕获组。只需要匹配字符串中的所有字符,然后在匹配字符串中的最后一个逗号之前,使用
\K
来“忘记”之前匹配的所有字符。这实际上只匹配最后出现的逗号。将逗号改为空格,然后是“and”。代码:(Demo)