2012-01-31 7 views
6

次のスクリプトでは、二重引用符( ")の間にテキストを引っ張りたいのですが、Pythonインタプリタは幸せではないので、理由がわかりません...引用符間のPython正規表現のマッチングテキスト

import re 

text = 'Hello, "find.me-_/\\" please help with python regex' 
pattern = r'"([A-Za-z0-9_\./\\-]*)"' 
m = re.match(pattern, text) 

print m.group() 

出力はfind.me-/\必要のあるテキストの先頭から検索

+3

btwパターンを簡略化することができます: パターン= r '"([^"] *) "' –

+0

' re.findall(パターン、テキスト) 'は、引用符。 –

答えて

11

match開始

使用search代わりに:。。

#!/usr/bin/env python 

import re 

text = 'Hello, "find.me-_/\\" please help with python regex' 
pattern = r'"([A-Za-z0-9_\./\\-]*)"' 
m = re.search(pattern, text) 

print m.group() 

matchおよびsearch返信Noneが一致しない場合は、

AttributeError: 'NoneType' object has no attribute 'group'をpythonから取得しているようです。これは返品をre.matchから確認せずにマッチすると仮定しているためです。

+0

nullが返されたかどうかを確認するにはどうすればよいですか? –

+0

'if m is None':doStuffIfNoMatch()else:doStuffIfMatch()' –

1

re.match()の代わりにre.search()を使用してください。後者は、最初にと一致します(暗黙の^のように)の文字列が一致します。

1

入力文字列の先頭に固定されているre.match() `ではなく、re.search()が必要です。

ドキュメントhere

関連する問題