python - 正则表达式中*的疑问
PHPz
PHPz 2017-04-18 09:53:18
0
7
419
import re
text = 'thenextnothingis123456'
print(re.search(r'(\d*)', text).group(0))

为什么这段代码不能匹配出数字?如果将d替换成w反倒可以匹配出所有字符?

PHPz
PHPz

学习是最好的投资!

全員に返信(7)
小葫芦

r'(d*)' の * の意味は 0 以上と一致することであるため、どの文字にも一致することはできません。 re.search を使用して文字列の先頭から照合を開始します。「thenextnothingis123456」の最初の文字は数字ではないため照合できませんが、r'(d*)' はどの文字にも照合できないため、空の文字列になります。が返されます。

And r'(d+)' は、1 と複数の数値の一致を必要とします。'thenextnothingis123456' の一致に使用すると、最初の文字が文字ではないことがわかり、文字 1 が始まるまで 2 番目の文字の試行が続けられます。 . Number なので、「123456」が一致することは、以下の出力を見るとわかります。

リーリー
いいねを押す +0
刘奇

なぜこのコードは数字と一致しないのでしょうか?

実際に一致したと感じます。これは 0 回です。あなたの .group(0) は nonetype エラーを報告しませんでした。これは、一致が成功したことを示しています。

いいねを押す +0
迷茫

正規表現に関する 30 分間の入門チュートリアル

いいねを押す +0
阿神

リーリー

11111111 re.search では #######2222222
を使用しているため、この文の結果は空になります。
いいねを押す +0
黄舟

d を試行すると、* は 0 回以上を意味します

いいねを押す +0
刘奇

いいねを押す +0
Peter_Zhu

リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート