ホームページ >バックエンド開発 >Python チュートリアル >Python で浮動小数点数を照合すると「re.findall()」が空の結果を返すのはなぜですか?
re.findall の不正動作: 望ましくない空の結果
指定されたシナリオでは、 re.search() は意図した数値を正常に抽出しました。ソース文字列から 123" を指定すると、 re.findall() が予期せず空の文字列を生成しました。
調査の結果、犯人は r'\ であることが判明しました。正規表現パターンの一部。生の文字列 (接頭辞 r が付く) 内では、\ は文字通りに扱われ、バックスラッシュ文字とそれに続く改行以外の任意の文字に一致します。ただし、これは浮動小数点数をキャプチャするための意図された動作ではありません。
問題を修正するために、修正されたパターン -?d*.?d は次の原則に従います。
この改訂されたパターンを使用して、re.findall() はソース文字列内の数値を正しく識別するようになりました:
import re s = r'abc123d, hello 3.1415926, this is my book' pattern = r'-?\d*\.?\d+' L = re.findall(pattern, s) print(L) # Output: ['123', '3.1415926']
re.findall() がグループをキャプチャせずに一致値を返すには、パターンに次の要素が含まれていない必要があることに注意してください。パターン内に後方参照がない限り、キャプチャ グループまたは非キャプチャ グループ (例: (?:))。
以上がPython で浮動小数点数を照合すると「re.findall()」が空の結果を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。