パターンの文字列があります{{開始日| 2005 | 8 | 29}} 今私は2005,8,99を3つの別個の要素として抽出したいと思います。 私はregexpを使用しました:re.findall( '([0-9])+'、str) これは2005,8,9の代わりに私に5,8,9を与えています 検索方法を試したときに同じパターンを使用していますre.search( '([0-9])+'、str).group() 私は2005年の最初の要素を得ました。 なぜこれら2つのメソッドの出力に違いがありますか?いつ私の現在の日付パターンの正規表現にする必要がありますか?正規表現パターンfindallと同じ理由で別の理由を与える検索
0
A
答えて
1
短いストーリー:'([0-9]+)'
を意味し、'([0-9])+'
ではありません。
詳細:すべてのペアのペアがグループを決定します。一致する単一の試行でグループが複数回キャプチャされた場合、最後のキャプチャだけが報告されます。あなたは、文字列に対して、この再呼び出したとき([0-9])
部分は、その後、その後、その後、'5'
'0'
'0'
'2'
に一致したので、それはもはや一致しませんでした前に、特に
は、それは、最初に行くラウンドに"2005"
のすべてを一致しました。したがって、それは"2005"
のすべてにマッチしましたが、グループ自体は、そのサブ表現の最終一致を報告しただけです:'5'
。
比較すると、後でグループメソッドでre.search
を試しました。 groupメソッドは、と一致する部分文字列を返します。、not the first groupの正規表現全体を返します。それで、それは"2005"
のすべてを返しました。代わりに.group(1)
に電話してみてください。
関連する問題
- 1. findall()ではなく正規表現のfinditer()を使用する理由
- 2. 正規表現を覚えようとしていた理由
- 3. Python正規表現検索/ findall。コンフィグフォーマット
- 4. Pythonの正規表現:のfindAll()と検索()
- 5. 正規表現Findallが最初に検索を停止する
- 6. この正規表現のパターンマッチングが動作しない理由
- 7. 正規表現が動作しない理由
- 8. 正規表現の検索パターン内で ")"を無効にする
- 9. 正規表現で1行のパターンを検索する
- 10. 検索に別の検索サーバーが必要な理由
- 11. 複数の日付を同じパターンで正規表現で検証する
- 12. Googleのウェブサイトの検索エンジンを使用する理由とその理由
- 13. yaccの規則とまったく同じシンボルの理由は?
- 14. 弾性検索パターンの正規表現で始まる
- 15. SQLで検索するための正規表現パターン
- 16. Pythonの正規表現のfindAllとマルチ
- 17. 正規表現でのUmlauts(ロケール経由)
- 18. それは私にコンパイルエラーを与える理由:それは私にコンパイルエラーを与える理由DeclareStuff
- 19. dbtype int32がint64と同じ理由hier
- 20. この正規表現パターンが結果をプリントアウトする理由を確かめてください
- 21. 正規表現の論理
- 22. 正規表現の理解
- 23. 正規表現とパターン{^と^}
- 24. oracle plsqlの正規表現を使用したパターン検索
- 25. 正規表現は4文字のパターンを検索します
- 26. 正規表現検索エンジン
- 27. 正規表現検索ヘルプ
- 28. 正規表現検索ワード「 - 」
- 29. Java正規表現の別のパターン
- 30. JavaScriptの正規表現の複数のパターン検索