PHP 正则表达式向前看,向后看 - 两者都不能匹配


PHP Regex look ahead and look behind - both must not match?

我目前正在寻找一种在某些地方从字符串中删除句号的方法。

我想要它,以便只有在不满足 2 个条件时才删除句号;

   句号前没有数字。

   句号后没有数字。

我目前有这个正则表达式

'#(?<!'d)'.(?!'d)#'

但这不会删除字符串中的句号,例如

'hello.1', '1.hello'

我猜由于在句号之前或之后有一个数字,匹配失败并且无法识别。

我怎样才能做到必须同时满足向前看和向后看,以便有匹配并正确删除句号?

谢谢。

编辑

我希望它删除句号,当且仅当~OR~之前没有数字时,句号之后没有数字。因此,只有当字符串如此(a digit).(a digit)时,才能有一个句号,但在任何其他情况下都会删除句号。

你可以这样做:

'#((?<!'d)'.|'.(?!'d))#'

如果点之前或后面有非数字,它将删除点。