Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
私はこのようなパターンを持っています(3つの単語の略語を見つける)
s='([A-Z][a-z]+ ){2,4}\([A-Z]{2,4}\)'
そして見つけたい
line='National Health Service (NHS)' p=re.findall(s,line)
しかし p は ['Service '] だけであり、文字列全体ではありません。なんで?
一致を正しくグループ化していないので、代わりにこれを使用してください。
s='(?:[A-Z][a-z]+ ){2,4}\([A-Z]{2,4}\)'
.findall()キャプチャグループ()を定義しない限り、一致全体を返します。定義する(...)と、代わりにグループに含まれる結果が返されます。上記のパターンでは、代わりに非キャプチャグループを使用しています((?:...))。これにより、キャプチャグループがない状態が表現されるため、.findall()完全一致が再び返されます。
.findall()
(...)
(?:...)