亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

數(shù)量詞

さあ、引き続き正規(guī)表現(xiàn)について理解を深めていきましょう。このパートでは、量指定子と、量指定子を使用する理由について理解します。ちょっと考えてみましょう。數(shù)十、數(shù)百の文字を一致させたい場(chǎng)合は、次のようにする必要がありますか?一つずつ書く? そこで數(shù)量詞が登場(chǎng)しました。

量指定子の辭書は: {min,max} です。 min と max は両方とも非負(fù)の整數(shù)です。カンマが存在し、max が省略された場(chǎng)合、max には制限がありません。カンマと max の両方を省略した場(chǎng)合は、min 回繰り返します。たとえば、\b[1-9][0-9]{3}\b は 1000 ~ 9999 の數(shù)値に一致します (「\b」は単語(yǔ)の境界を表します)。一方、\b[1-9][0 -9]{ 2,4}\b、100 ~ 99999 の數(shù)値と一致します。

英語(yǔ)の文字列內(nèi)の 4 ~ 7 文字と一致する以下の例を見(jiàn)てみましょう。

import re
a = 'java*&39android##@@python'
# 數(shù)量詞
findall = re.findall('[a-z]{4,7}', a)
print(findall)

出力結(jié)果:

['java', 'android', 'python']

注意:貪欲と非貪欲。

Greedy モード: 文字列全體を一度に読み取り、一致しない場(chǎng)合は右端の文字を吐き出し、一致する文字が見(jiàn)つかるまで一致するのが特徴です。見(jiàn)つかりました。文字列または文字列の長(zhǎng)さが 0 です。その目的は、できるだけ多くの文字を読み取ることであるため、最初の一致が読み取られるとすぐに戻ります。

Lazy モード: 文字列の左側(cè)から開(kāi)始して、文字列內(nèi)の文字を読み取らずに照合を試みるのが特徴です。失敗した場(chǎng)合は、もう 1 文字読んで再度照合します。このサイクルは、一致が見(jiàn)つかりました。一致した文字列を返し、文字列の終わりまで再度一致します。

上記の例は貪欲ですが、非貪欲モード、つまり遅延モードを使用したい場(chǎng)合はどうすればよいでしょうか?

non-greedy を使用する場(chǎng)合は、? を追加します。上記の例は次のように変更されます:

import re
a = 'java*&39android##@@python'
# 貪婪與非貪婪
re_findall = re.findall('[a-z]{4,7}?', a)
print(re_findall)

出力結(jié)果は次のとおりです:

['java', 'andr', 'pyth']

As can出力結(jié)果からわかるように、ここでは遅延モードが使用されているため、android は andr を除いてのみ印刷され、Python は pyth を除いてのみ印刷されます。

もちろん、次のような數(shù)量を表現(xiàn)できる特殊文字もいくつかあります。

?:告訴引擎匹配前導(dǎo)字符 0 次或 1 次
+:告訴引擎匹配前導(dǎo)字符 1 次或多次
*:告訴引擎匹配前導(dǎo)字符 0 次或多次

このパートの知識(shí)ポイントを要約すると、次の表になります。

#怠け者 ? ? ? 0 個(gè)または 1 回の出現(xiàn)。{0,1}##? に相當(dāng)します。 ##**? と同等です。 ゼロ個(gè)以上の出現(xiàn)。{0,}ちょうど n 回発生します少なくとも n 個(gè)の分岐と m 個(gè)を超えるオカレンス少なくとも n 件発生
#貪欲 #説明
は 1 回以上出現(xiàn)します。これは、{1,}
##{n}{n} に相當(dāng)しますか?
{n,m}{n,m}?
{n,}{n,}?


##

學(xué)び続ける