2012-04-05 76 views
0

我很努力構建一個正則表達式來捕捉以tw(或Tw或TW)開頭的單詞,無論它們是在引號(單或雙)之間還是不在。 到目前爲止'\ b [tT] [wW] [a-zA-Z0-9] *'會捕獲所有tw,Tw和TW開頭的單詞,但會在單引號或雙引號中錯過。 它找到tweeple和TWEEPLE,但不是「tweeple」和「TWEEPLE」。正則表達式:帶有可選引號的雙字前綴

非常感謝。

回答

2

字符串中的\b被解釋爲退格字符,而不是序列\b,它將被正則表達式引擎解釋爲字邊界。在`\ B`不是字面

>>> 'abc\b' 
'abc\x08' 
>>> print 'abc\b' 
abc 
>>> r'abc\b' 
'abc\\b' 
>>> print r'abc\b' 
abc\b 
+0

良好的漁獲:您的字符串更改爲raw string literal或轉義反斜線和它應該工作:

>>> re.findall(r'\b[tT][wW][a-zA-Z0-9]*', ' "TWEEPLE" tweeple ') ['TWEEPLE', 'tweeple'] 

這裏是差異的例子。而且我沒有意識到它包含引號 - 儘管如此。刪除我的答案。 – 2012-04-05 16:44:49