我正在努力构建一个正则表达式来捕获以tw(或Tw或TW)开头的单词,无论它们是否在引号(单引号或双引号)之间。 到目前为止'\ b [tT] [wW] [a-zA-Z0-9] *'捕获了所有tw,Tw和TW的起始单词,但是错过了btw单引号或双引号中的单词。 它找到了tweeple和TWEEPLE,但不是“tweeple”,也不是“TWEEPLE”。
非常感谢。
答案 0 :(得分:2)
字符串中的\b
被解释为退格符,而不是序列\b
,它将被正则表达式引擎解释为单词边界。将您的字符串更改为raw string literal或转义反斜杠,它应该起作用:
>>> re.findall(r'\b[tT][wW][a-zA-Z0-9]*', ' "TWEEPLE" tweeple ')
['TWEEPLE', 'tweeple']
以下是差异的一个例子:
>>> 'abc\b'
'abc\x08'
>>> print 'abc\b'
abc
>>> r'abc\b'
'abc\\b'
>>> print r'abc\b'
abc\b