パターン {{Start date|2005|8|29}} の文字列があります。ここで、2005,8, 29 を 3 つの個別の要素として抽出したいと考えています。したがって、私が使用した正規表現: re.findall('([0-9])+',str) これにより、2005, 8, 29 の代わりに 5,8 および 9 が得られます 検索方法を試したときに同じパターンを使用 re.search ('([0-9])+',str).group() 次に、最初の要素を 2005 として取得しました。これら 2 つのメソッドの出力に違いがあるのはなぜですか。現在の日付パターンの正規表現はいつですか?
1 に答える
1
簡単に言えば、あなたは'([0-9]+)'
ではなくを意味してい'([0-9])+'
ました。
詳細: 括弧のすべてのペアがグループを決定します。1 回の照合でグループが複数回キャプチャされた場合、最後のキャプチャのみが報告されます。
特に、文字列に対してこの re を呼び出すと、部分が 、 then 、 then 、 then に一致したため、最初のラウンドですべて一致しましたが、"2005"
それ以上一致できなくなりました。したがって、 のすべてに一致しましたが、グループ自体はその部分式の最後の一致のみを報告しました: 。([0-9])
'2'
'0'
'0'
'5'
"2005"
'5'
それに比べて、後でre.search
グループメソッドを試しました。group メソッドは、最初のグループではなく、正規表現全体に一致する部分文字列を返します。したがって、 のすべてが返されました。違いを確認するには、代わりに電話してみてください。"2005"
.group(1)
于 2012-05-07T03:44:54.507 に答える