考虑这句话:
关于LASER应用的这句话到此结束。 句子应该以空格开头。这一个很好。这不是。
我希望使用preg_replace正确地分隔两个错误的位置“ here.Naturally”和“ fine.This”的句号和大写字母。
其他所有内容都应保持不变。
我得到的最接近的是我雇用的(?<!\ )[A-Z]
:
$this_desc = preg_replace('/(?<!\ )[A-Z]/', ' $0', $this_desc);
...但是它也匹配首字母和首字母缩写“ LASER”中的大写... regexr.com/3ss3o
答案 0 :(得分:2)
您可以使用此正则表达式进行环视搜索:
/(?<!\h)\.(?=[A-Z])/
或使其能够识别Unicode大写字母,请使用:
/(?<!\h)\.(?=\p{Lu})/
代码:
$this_desc = preg_replace('/(?<!\h)\.(?=[A-Z])/', '$0 ', $this_desc);
RegEx详细信息:
(?<!\h)
:在背后断言我们在先前位置没有水平空间\.
:匹配一个点(?=[A-Z])
:先行断言我们前面有一个大写字母