2012-12-27 28 views
4

我想一個正則表達式,將在每一個"."分割字符串,除非該"."的前面和後面的數字。例如:結合排除模式和落後的正則表達式

"hello world.foo 1.1 bar.1" ==>["hello world","foo 1.1 bar", "1"]

我目前有:

"(?<![0-9])\.(?!\d)" 

但它給:

["hello world", "foo 1.1 bar.1"] 

但沒有找到最後"."有效。在.

回答

1

分割,如果它不是由一個數字之前,或者如果它不是一個數字成功:

In [18]: re.split(r'(?<!\d)\.|\.(?!\d)', text) 
Out[18]: ['hello world', 'foo 1.1 bar', '1'] 
1

這是因爲,只有那些斷言一個有故障時,整個表達式失敗。試試這個:

"(?<![0-9])\.|\.(?!\d)" 
3

非|方法:

(?<![0-9](?=.[0-9]))\.