2016-09-05 7 views
-1

正規表現の場合は、^(?s).*?HOLIDAY.*?INN.*?EXPRESS.*?$^(?s).*HOLIDAY.*INN.*EXPRESS.*$のどちらを使用するとよいでしょうか.*の代わりに.*?を使用するとどうなりますか? .*.*?regex Quantifierの違いは何ですか:。*と。*?

+1

ドットスタークエスチョンマーク(。*?)は、正規表現エンジンに「可能な限り、0回以上、0回以上一致します」と伝えます。エンジンはゼロ文字をマッチさせることによってスタートし、( "WORD 2"が見つからないので)マッチを返すことができないので、それは1つ以上の文字にマッチします。ドットは何もここに行くことを意味し、星は少なくとも0回を意味するので、 '。*'は空文字列を含む文字列を受け付けます。 – khakishoiab

答えて

1

*は、できるだけ多くの文字と一致することを意味貪欲数量詞です:正規表現数量詞の違いは何かつまり

*?は非貪欲な量指定子で、可能な限り小さな文字数に一致します。

この場合の違いを理解するには、次のフラグメントまたは正規表現HOLIDAY.*?INNを見てみましょう。この場合、.*?は、文字列HOLIDAYとその後に出現する最初のINNの間のテキストと一致します。 ?がなければ、はるか遠方にあるINNが見つかる可能性があります。

関連する問題