Php 如何在限定大写字母后插入句点?
根据以下规则,我如何在任何大写字母后插入句点,而这些字母后面没有大写字母:Php 如何在限定大写字母后插入句点?,php,regex,preg-replace,Php,Regex,Preg Replace,根据以下规则,我如何在任何大写字母后插入句点,而这些字母后面没有大写字母: 它后面是一个空格;或 后跟另一个大写字母;或 它是字符串中的最后一个字母,前面有空格或大写字母 输入/输出示例: Patrick TJ Stephens成为Patrick T.J.Stephens TJ斯蒂芬斯变成T.J.斯蒂芬斯 TJ Stephens QC变成T.J.Stephens Q.C. Marissa C.J.Gilbert变成Marissa C.J.Gilbert Marissa C.Gilbert变成Ma
Patrick TJ Stephens
成为Patrick T.J.Stephens
TJ斯蒂芬斯
变成T.J.斯蒂芬斯
TJ Stephens QC
变成T.J.Stephens Q.C.
Marissa C.J.Gilbert
变成Marissa C.J.Gilbert
Marissa C.Gilbert
变成Marissa C.Gilbert
C玛丽莎·吉尔伯特
变成C玛丽莎·吉尔伯特
Marissa Gilbert C
变成Marissa Gilbert C.
我一直在使用:
$str = preg_replace( '/([A-Z])(?=\s|$)/', '\1.', $str );
不幸的是,它将Patrick TJ Stephens
变成了Patrick TJ。Stephens
代替Patrick T.J.Stephens您可以使用:
$str = preg_replace('/[A-Z](?![a-z.])\K/', '.', $str);
不确定它是否遵循你的规则,但它确实起作用
或者使用这个:
[A-Z](?![^A-Z\s])\K
翻译您的所有需求将需要一个前向和后向,因为这个正则表达式:
$str = preg_replace('/(?<=[\hA-Z])[A-Z]$|[A-Z](?=[\hA-Z])/m', '$0.', $str);
$str=preg_replace(“/”(?和一个假人版本,由假人me:)
以下是将“Patrick TJ Stephens”变成“Patrick T.J Stephens”的,在“J”之后没有句号。
$str = preg_replace(
array(
'/([A-Z])(?=\s|$)/',
'/([A-Z])([A-Z])/'
),
array(
'\1.',
'\1.\2'
),
$str );