我想要一个正则表达式,它将在每个"."
拆分字符串,除非"."
之前和之后是一个数字。例子:
"hello world.foo 1.1 bar.1"
==> ["hello world","foo 1.1 bar", "1"]
我现在有:
"(?<![0-9]).(?!d)"
但是它给出了:
["hello world", "foo 1.1 bar.1"]
但是没有找到最后一个有效的"."
非|方法:
(?<![0-9](?=.[0-9])).
在.
上,如果前面没有数字,或者后面没有数字,则分割:
In [18]: re.split(r'(?<!d).|.(?!d)', text)
Out[18]: ['hello world', 'foo 1.1 bar', '1']
这是因为只有其中一个断言失败,整个表达式才会失败。试试这个:
"(?<![0-9]).|.(?!d)"
为了提供最短的解决方案,以下是我的解决方案:
(这只是@ yth的解决方案与一个小的调整)
(?<!d(?=.d)).