2009-06-26 6 views

答えて

9
re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '\+test', re.I) 

「+」は、正規表現で「1回以上繰り返す」量指定子です。繰り返し可能なものに従わなければならないし、リテラル "+"にマッチさせたい場合にはエスケープする必要がある。

正規表現を動的に作成したい場合は、これを改善します。

re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % re.escape('+test'), re.I) 
+0

マークがすばやく! これは変数のどこでもOKです。 tag = '+ test'(またはtag = 'test') 検索= re.compile(r '([a-zA-Z0-9])(%s )([^ a-zA-Z0-9]) '%r' \%s '%tag、re.I) ありがとうございます。 – PhoebeB

5
はプラスエスケープ

r'\+test' 

プラスは(「前回または数回に一致する」という意味)正規表現で特別な意味を持っています。あなたの正規表現では開いた括弧の後に現れるので、繰り返し一致する "前の"ものはありません。

関連する問題