re.findall()
複数のパターンを見つけるために使用します。この場合@
、単語の文字で構成される、が前に付いているものはすべて次のようになります。
re.findall(r'(?<=@)\w+', inputtext)
この(?<=..)
構文は肯定的な後読みアサーションです。現在の位置の前に@
文字がある場合にのみ一致します。したがって、上記のパターンは、それらの文字の前に記号がある場合にのみ、1 つ以上の単語文字 (\w
文字クラス)に一致します。@
デモ:
>>> import re
>>> re.findall(r'(?<=@)\w+', 'This is @lame')
['lame']
>>> re.findall(r'(?<=@)\w+', 'This is lame')
[]
>>> re.findall(r'(?<=@)\w+', 'This is @lame but that is @not')
['lame', 'not']
パターンを再利用する予定がある場合は、最初に式をコンパイルしてから、コンパイルされた正規表現オブジェクトで.findall()
メソッドを使用します。
at_words = re.compile(r'(?<=@)\w+')
at_words.findall(inputtext)
これにより、 を呼び出すたびにキャッシュ ルックアップを節約できます.findall()
。