-1
正規表現の場合は、^(?s).*?HOLIDAY.*?INN.*?EXPRESS.*?$
と^(?s).*HOLIDAY.*INN.*EXPRESS.*$
のどちらを使用するとよいでしょうか.*
の代わりに.*?
を使用するとどうなりますか? .*
と.*?
regex Quantifierの違いは何ですか:。*と。*?
正規表現の場合は、^(?s).*?HOLIDAY.*?INN.*?EXPRESS.*?$
と^(?s).*HOLIDAY.*INN.*EXPRESS.*$
のどちらを使用するとよいでしょうか.*
の代わりに.*?
を使用するとどうなりますか? .*
と.*?
regex Quantifierの違いは何ですか:。*と。*?
*
は、できるだけ多くの文字と一致することを意味貪欲数量詞です:正規表現数量詞の違いは何かつまり
。 *?
は非貪欲な量指定子で、可能な限り小さな文字数に一致します。
この場合の違いを理解するには、次のフラグメントまたは正規表現HOLIDAY.*?INN
を見てみましょう。この場合、.*?
は、文字列HOLIDAY
とその後に出現する最初のINN
の間のテキストと一致します。 ?
がなければ、はるか遠方にあるINN
が見つかる可能性があります。
ドットスタークエスチョンマーク(。*?)は、正規表現エンジンに「可能な限り、0回以上、0回以上一致します」と伝えます。エンジンはゼロ文字をマッチさせることによってスタートし、( "WORD 2"が見つからないので)マッチを返すことができないので、それは1つ以上の文字にマッチします。ドットは何もここに行くことを意味し、星は少なくとも0回を意味するので、 '。*'は空文字列を含む文字列を受け付けます。 – khakishoiab