GoogleのPythonコースで提供されているいくつかの正規表現の例をリストに渡し、各出力を新しい行に出力しようとしています。GoogleのPythonコース:正規表現のリストを繰り返し、各行を新しい行に出力する
python regex.py
I found a cat :) word:cat
それだけの屋台やそれ以上の出力を生成しません:私はpython regex.py
実行すると
import re
str='an example word:cat!!'
match=re.search(r'word:\w\w\w',str)
if match:
print('I found a cat :)',match.group()) ## 'found word:cat'
else:
print('did not find')
matches=[re.search(r'pi+', 'piiig'),re.search(r'i+', 'piigiiii'),re.search(r'\d\s*\d\s*\d', 'xx1 2 3xx'),re.search(r'\d\s*\d\s*\d', 'xx12 3xx'),re.search(r'\d\s*\d\s*\d', 'xx123xx'),re.search(r'^b\w+', 'foobar'),re.search(r'b\w+', 'foobar')]
for the_match in matches:
matches.append(the_match)
print("\n".join(matches))
#del matches
は、私は次の取得します。私はctrl+c
を2回押して終了する必要があります。
どのような出力を得るために私を聞かせてください。
re.search(r'pi+', 'piiig') returned (<_sre.SRE_Match object; span=(0, 4), match='piii'>, <_sre.SRE_Match object; span=(1, 3), match='ii'>)
re.search(r'i+', 'piigiiii') returned <_sre.SRE_Match object; span=(1, 3), match='ii'>
etc...
を、私は、Windows 10バージョン10.0.10586 64ビットでPython 3.5.2を実行しています。
ありがとうございました!あなたの答えの後
(@Buzz)以下のように、私のスクリプトは次のとおりです。
import re
str='an example word:cat!!'
match=re.search(r'word:\w\w\w',str)
matches=[re.search(r'pi+', 'piiig'),re.search(r'i+', 'piigiiii'),re.search(r'\d\s*\d\s*\d', 'xx1 2 3xx'),re.search(r'\d\s*\d\s*\d', 'xx12 3xx'),re.search(r'\d\s*\d\s*\d', 'xx123xx'),re.search(r'^b\w+', 'foobar'),re.search(r'b\w+', 'foobar')]
if match:
print('I found a cat :)',match.group()) ## 'found word:cat'
else:
print('No match found.')
for the_match in matches:
print(the_match)
次のように出力されている:
I found a cat :) word:cat
<_sre.SRE_Match object; span=(0, 4), match='piii'>
<_sre.SRE_Match object; span=(1, 3), match='ii'>
<_sre.SRE_Match object; span=(2, 9), match='1 2 3'>
<_sre.SRE_Match object; span=(2, 7), match='12 3'>
<_sre.SRE_Match object; span=(2, 5), match='123'>
None
<_sre.SRE_Match object; span=(3, 6), match='bar'>
これは完璧に動作します。どうもありがとうございます。
'matches.append(the_match')を削除し、' print'行を 'print(the_match)'に変更しました。私は新しいスクリプトで質問を更新します。 –