文字列の一部(特定のWord)を照合して印刷したい。 _grep -o
_が正確に行うこと。私の言葉は、たとえば「黄色い犬」であり、複数の行にまたがる文字列で見つけることができます。
_[34343] | ****. "Example": <one>, yellow dog
tstring0 123
tstring1 456
tstring2 789
_
この正規表現mydog = re.compile(', .*\n')
を試して、一致した単語のみをif mydog.search(string):
で出力してみましょう。
出力で「黄色い犬」だけを取得するにはどうすればよいですか?
キャプチャグループとfindallの使用:
>>> import re
>>> s = """[34343] | ****. "Example": <one>, yellow dog
... tstring0 123
... tstring1 456
... tstring2 789"""
>>> mydog = re.compile(', (.*)\n')
>>> mydog.findall(s)
['yellow dog']
最初の一致のみが必要な場合:
>>> mydog.findall(s)[0]
'yellow dog'
注:IndexError
に一致するものが含まれていない場合は、s
を処理する必要があります。
キャプチャグループを指定しない場合、式全体と一致するテキストはmatchResult.group(0)
とともに含まれます。あなたの場合、これは_', yellow dog\n'
_になります。 _yellow dow
_だけが必要な場合は、キャプチャグループを式, (.*?)\n
に追加する必要があります。また、_.*
_を_.*?
_に変更しました。これにより、貪欲でなくなり、最初の改行が見つかったときに停止します。
_>>> s = '''[34343] | ****. "Example": <one>, yellow dog
tstring0 123
tstring1 456
tstring2 789'''
>>> mydog = re.compile(', (.*?)\n')
>>> matchResult = mydog.search(s)
>>> if matchResult:
print(matchResult.group(1))
yellow dog
_