Php 正则表达式从字符串中删除句点/句点,但不从内部数字中删除句点/句点
我正在寻找一个正则表达式来删除字符串中的句点/句点,而不是从内部数字中删除句点/句点,并替换为空格Php 正则表达式从字符串中删除句点/句点,但不从内部数字中删除句点/句点,php,regex,Php,Regex,我正在寻找一个正则表达式来删除字符串中的句点/句点,而不是从内部数字中删除句点/句点,并替换为空格 $str1 = 'some.text.1.2.3.more.text'; $str2 = preg_replace('/(?<!\d)[._](?![._\d])/', ' ', $str1); $str1='some.text.1.2.3.more.text'; $str2=preg_replace('/(?使用此选项。在替换字符之前,它会查找左侧的非数字或右侧的非数字 $str2 =
$str1 = 'some.text.1.2.3.more.text';
$str2 = preg_replace('/(?<!\d)[._](?![._\d])/', ' ', $str1);
$str1='some.text.1.2.3.more.text';
$str2=preg_replace('/(?使用此选项。在替换字符之前,它会查找左侧的非数字或右侧的非数字
$str2 = preg_replace('/(?<=\D)[._]|[._](?=\D)/', ' ', $str1);
$str2=preg_replace('/(?您就快到了。您需要的是替换前面没有数字或后面没有数字的点/下划线:
$str2 = preg_replace('/((?<!\d)[._])|([._](?![._\d]))/', ' ', $str1);
$str2=preg_replace('/(?另一种方法:
$str2 = preg_replace('~\d[._\d]*\d(*SKIP)(?!)|[._]~', ' ', $str1);
由于(?!)
(总是错误的断言)和(*SKIP)
回溯控制谓词,第一部分总是失败。@HamZa是的。它无法删除
。这种情况下,将前瞻更改为(?=\D |$)后,它将工作
。为什么不使用(*失败)
?或者这只是一种偏好?@HamZa:谢谢您的编辑!没有特殊原因,可以更改或缩短它。