【发布时间】:2012-06-20 11:23:38
【问题描述】:
我目前正在寻找一种在某些地方从字符串中删除句号的方法。
我希望它只有在不满足 2 个条件时才会删除句号;
句号之前没有数字。
与
句号后没有数字。
我目前有这个正则表达式
'#(?<!\d)\.(?!\d)#'
但这不会删除字符串中的句号,例如
'hello.1', '1.hello'
我猜是因为在句号之前或之后有一个数字,所以匹配失败并且无法识别。
我怎样才能做到既要向前看又要向后看,才能进行匹配并正确删除句号?
谢谢。
编辑
当且仅当 ~OR~ 之前没有数字时,我希望它删除句号,句号之后没有数字。因此,如果字符串像 (a digit).(a digit) 这样,则只能有句号,但在任何其他情况下都会删除句号。
【问题讨论】:
-
你的问题对我来说似乎很矛盾。
There is not a digit before the fullstopANDThere is not a digit after the fullstop,如果您使用的是and,它将仅在满足两个条件时才匹配,您的示例字符串正确地无法匹配。你的意思是or? -
我的意思是当且仅当句号之前没有数字并且句号之后没有数字时,我希望它删除句号。所以只有这样才能有句号
1122.2323 -
您在问题中的措辞令人困惑。你能举例说明“1.6”和“h.j”的预期输出吗?
-
我编辑了这个问题,很抱歉造成混乱!
-
你又做了一次。 :-p
not (before AND after)与not before AND not after不同。根据De Morgan's laws,与not before OR not after相同。