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

时间:2012-06-20 03:03:48

标签: php regex

我目前正在寻找一种方法,可以在某些地方删除字符串中的fullstops。

我希望它只有在不满足2个条件时才会删除fullstops;

在满座之前没有数字。

完整停车后没有数字。

我目前有这个正则表达式

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

但这并不会删除字符串中的fullstops,例如

'hello.1', '1.hello'

我猜测,因为在完全停止之前或之后有一个数字,匹配失败并且无法识别。

我怎样才能做到这一点,以便必须满足前瞻和后方才能有匹配并正确删除fullstop?

谢谢。

修改

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

1 个答案:

答案 0 :(得分:3)

你可以这样做:

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

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