re.findall() 関数は、次の場合に期待した結果を返さない場合、混乱を招く可能性があります。文字列と一致します。特定のケースでの動作の背後にある理由を調べてみましょう。
次のソース文字列を考えてみましょう:
s = r'abc123d, hello 3.1415926, this is my book'
そして次のパターン:
pattern = r'-?[0-9]+(\.[0-9]*)?|-?\.[0-9]+'
re.search を使用すると、正しい結果:
m = re.search(pattern, s) print(m) # <_sre.SRE_Match object; span=(3, 6), match='123'>
ただし、re.findall は空のリストを返します:
L = re.findall(pattern, s) print(L) # []
2 つの重要な側面考慮:
数値を正しく照合するには、代わりに次のパターンを使用してください:
pattern = r'-?\d*\.?\d+'
このパターン一致:
この修正されたパターンを使用すると、re.findall は期待されるリストを返します:
['123', '3.1415926']
以上が「re.search()」が一致を見つけたときに「re.findall()」が空のリストを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。