「{m}」と「{m、n}」の違いは何ですか? http://docs.python.org/library/re.htmlで '{m、n}?'と表示されますmからnまでの範囲の数値と一致しますが、貪欲な検索ではありません。したがって、貪欲な検索ではない場合は、それはmまで一致するだけではなく、何ですか?python正規表現
3
A
答えて
14
{m,n}?
は、好ましくはただm
の繰り返しと一致しますが、それは長い試合のために必要かどうn
繰り返しまで、必要に応じてそれが拡大していきます。
は^x{2}y$
と^x{2,4}?y$
を比較します。後者は一致するのに対し、
前者はxxxy
に失敗します。
x{m}
を::x
正確m
回一致要約する
。
x{m,n}
:x
n
回にマッチするようにしてください、それが失敗する全体的な一致が発生した場合、必要に応じてバック与えるが、試合少なくともm
倍(貪欲な量指定子)。
x{m,n}?
:x
m
回にマッチするようにしてください、それが失敗し、全体的な一致が発生した場合、最もn
回(怠惰な量指定子)で、必要に応じて拡張するが、試合。
1
これは、2つの一致するグループを使用して例を参照するのが最も簡単だ:すなわち
>>> re.match(r'(x{1,3}?)(.*)', 'xxxxx').groups()
('x', 'xxxx')
>>> re.match(r'(x{1,3})(.*)', 'xxxxx').groups()
('xxx', 'xx')
、{N、M}と{N、M}?どちらもまったく同じものに一致することができます。それが変化するのは、一致させる方法が複数ある場合にグループ分けが行われるところです。
関連する問題
- 1. Python Unicode正規表現
- 2. 正規表現 - 正規表現
- 3. 。NET正規表現(正規表現)
- 4. 正規表現 - 正規表現
- 5. 正規表現(正規表現)Java
私はPython風の正規表現についてはわかりませんが、ほとんどの正規表現のフレーバー(およびそのプログラミング言語の大部分)は機能的に同じ構造をいくつか持っています。これは1つではありませんが、見つけたら驚かないでください。 –
@chris:疑問があるときは、オンラインツールを使って正規表現システムをいくつかの言語から簡単に比較することができます。PHPとjavascriptはhttp://regex.larsolavtorvik.com/を、pythonにはhttp://ksamuel.pythonanywhere.comがあります。ここで簡単に新しい構造ではないことがわかります。 –