私は次の正規表現があります。正規表現 - 試合の範囲
re.findall(r'(\b[A-Za-z][a-z]{3,10}\b)', string_var)
を私は、この正規表現は3
から10
までの長さのマッチを返すことを期待。ただし、長さが4
から11
までの単語の一致を返します。
上記の正規表現は、大文字または小文字の文字で始まり、長さが3
から10
までの文字で始まります。言い換えれば、範囲を拡張した余分な文字として最初の文字を持つ?
ありがとうございました。
私は次の正規表現があります。正規表現 - 試合の範囲
re.findall(r'(\b[A-Za-z][a-z]{3,10}\b)', string_var)
を私は、この正規表現は3
から10
までの長さのマッチを返すことを期待。ただし、長さが4
から11
までの単語の一致を返します。
上記の正規表現は、大文字または小文字の文字で始まり、長さが3
から10
までの文字で始まります。言い換えれば、範囲を拡張した余分な文字として最初の文字を持つ?
ありがとうございました。
はい。
あなたの正規表現は
(\b[A-Za-z][a-z]{3,10}\b)
は今、グループ化括弧は試合に影響を与えませんので、我々は彼らを無視することができます。 \b
は、「ゼロ幅」のマッチング演算子です。つまり、ある文字クラスから別の文字クラスへの遷移に一致します。したがって、実際にはどの文字にも対応しません。私たちはそれらを無視することができます。すなわち、これを残す:
[A-Za-z][a-z]{3,10}
これは第二に繰り返し指定サフィックスを持つ2つの文字クラスである:
[A-ZA-Z] - 一文字、大文字または小文字のラテン語と一致しますアルファベット。
[-Z] {3,10} - マッチ少なくとも3、最大10文字で、
だから合計で、あなたは、1 + [3,10]の文字にマッチしている-Zを小文字。あなたの最小一致は4文字で、最大一致は11になります。
あなたのマッチは4文字から11文字の範囲です。 '{3、10}'量子(つまり、少なくとも3つと10以下)は、第2の文字セットにのみ適用されます。 – miqid
ご意見ありがとうございます。申し訳ありませんが、私は11の代わりに8を入力し、10の代わりに7を入力しました。 – Simplicity