正则表达式:带有可选引号的两个带前缀的单词

时间:2012-04-05 16:19:43

标签: regex python-2.7 quotes double-quotes

我正在努力构建一个正则表达式来捕获以tw(或Tw或TW)开头的单词,无论它们是否在引号(单引号或双引号)之间。 到目前为止'\ b [tT] [wW] [a-zA-Z0-9] *'捕获了所有tw,Tw和TW的起始单词,但是错过了btw单引号或双引号中的单词。 它找到了tweeple和TWEEPLE,但不是“tweeple”,也不是“TWEEPLE”。

非常感谢。

1 个答案:

答案 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