以简单的方式使用php regexp,是否可以修改字符串以在逗号和句点之后添加空格,而不是在逗号或句点之前和之后添加数字,例如1,000.00?
String,looks like this with an amount of 1,000.00
需要改为......
String, looks like this with an amount of 1,000.00
这应该允许多个实例当然......这是我现在使用的,但它导致数字返回为1,000. 00
$punctuation = ',.;:';
$string = preg_replace('/(['.$punctuation.'])[\s]*/', '\1 ', $string);
答案 0 :(得分:0)
您可以将'/(?<!\d),|,(?!\d{3})/'
替换为', '
。
类似的东西:
$str = preg_replace('/(?<!\d),|,(?!\d{3})/', ', ', $str);
答案 1 :(得分:0)
我正在寻找这个正则表达式。
这篇文章真的对我很有帮助,我改进了Qtax提出的解决方案。
这是我的:
$ponctuations = array(','=>', ','\.'=>'. ',';'=>'; ',':'=>': ');
foreach($ponctuations as $ponctuation => $replace){
$string = preg_replace('/(?<!\d)'.$ponctuation.'(?!\s)|'.$ponctuation.'(?!(\d|\s))/', $replace, $string);
}
有了这个解决方案,“像这样的句子”将不会改为“句子如:这个”(有两个空白的空间)
就是这样。
答案 2 :(得分:0)
尽管这已经很老了,但我一直在寻找同样的问题,并且在理解了解决方案之后给出了不同的答案。
此正则表达式不是检查逗号前的字符,而是检查逗号后的字符,因此可以将其限制为字母字符。同样,这不会在逗号后面创建两个空格的字符串。
%matplotlib inline
可以检查测试脚本here。