我是关于正则表达式的新手我试图将2个或更多逗号替换为1并删除最后一个逗号。
$string1= preg_replace('(,,+)', ',', $string1);
$string1= preg_replace('/,([^,]*)$/', '', $string1);
我的问题是:有没有办法用一行正则表达式做到这一点?
答案 0 :(得分:5)
是的,当然有可能:
$result = preg_replace(
'/(?<=,) # Assert that the previous character is a comma
,+ # then match one or more commas
| # or
, # Match a comma
(?=[^,]*$) # if nothing but non-commas follow till the end of the string
/x',
'', $subject);
答案 1 :(得分:0)
不,这是不可能的,因为替换是不同的,并且两个逗号可能或可能不在字符串的末尾。
尽管如此,preg_replace()
接受了一系列模式和替换,所以你可以这样做:
preg_replace(array('/,,+/', '/,$/'), array(',', ''), $string1);
请注意,我修改了第二个模式。 希望有所帮助。