0

私はPythonで正規表現を扱っていますが、これに苦労しています。次のような行のファイルにデータがあります。

|person=[[Old McDonald]]

Old McDonaldこの行から抽出できるようにしたいだけです。

私はこの正規表現を試してきました:

matchLine = re.match(r"\|[a-z]+=(\[\[)?[A-Z][a-z]*(\]\])", line)
print matchLine

しかし、うまくいきません。None毎回の結果です。

4

1 に答える 1

3

構成[A-Z][a-z]*が一致しませんOld McDonald。おそらく次のようなものを使用する必要があります[A-Z][A-Za-z ]*。コード例は次のとおりです。

import re
line = '|person=[[Old McDonald]]'
matchLine = re.match ('\|[a-z]+=(?:\[\[)?([A-Z][A-Za-z ]*)\]\]', line)
print matchLine.group (1)

出力はOld McDonald私のためです。文字列の途中で検索する必要がある場合は、re.search代わりにre.match次を使用します。

import re
line = 'blahblahblah|person=[[Old McDonald]]blahblahblah'
matchLine = re.search ('\|[a-z]+=(?:\[\[)?([A-Z][A-Za-z ]*)\]\]', line)
print matchLine.group (1)
于 2013-02-28T09:08:08.247 に答える