考慮一個字符串s = "aa,bb11,22 , 33 , 44,cc , dd "
。Python(Perl型)正則表達式lookahead/lookbehind
我想s
拆分爲使用令牌下面的列表中regular expressions module在Python的,這是類似於Perl中提供的功能:
"aa,bb11"
"22"
"33"
"44,cc , dd "
注:
- 我想tokenise上逗號,但只有在這些逗號有號碼兩側。
- 任何(可選)圍繞我所針對的這些「數字逗號」應該在結果中刪除空格。可選的空格可能不止一個空格。
- 任何其他空格應該保留原來的字符串中。
我迄今爲止最好的嘗試是:
import re
pattern = r'(?<=\d)(\s*),(\s*)(?=\d)'
s = 'aa,bb11,22 , 33 , 44,cc , dd '
print re.compile(pattern).split(s)
但這打印:
['aa,bb11', '', '', '22', ' ', ' ', '33', ' ', ' ', '44,cc , dd ']
這是接近我想要的東西,因爲在4個事情要載在列表中。我可以通過並擺脫任何空字符串和任何只包含空格/逗號的字符串,但我寧願有一個單行的正則表達式來完成這一切。
任何想法?
@Ωmega再看一遍。這不是兩個都做,它使用正則表達式分割。否則什麼是分裂? – mVChr 2012-07-22 16:17:44
@megamega split是一個正則表達式,但findall也是如此。斯普利特是被要求的。經過兩次測試,無論兩者是否「足夠快」,即使調整了較慢的編譯時間,您的方法也會比mVChr更慢。 – 2012-07-22 16:55:48