32

私はすでに.*それがゼロ以上の任意の文字を意味することを理解していますが、誰かが.*次の作品でどのように、そしてそれが何と一致するかを説明できますか?

.*([a-m/]*).*

.*([a-m/]+).*

.*?([a-m/]*).*
4

4 に答える 4

24

ドットはここに何でも入れることができることを意味し、スターは少なくとも 0 回を意味するため.*、空の文字列を含む任意の文字列を受け入れます。

于 2012-10-01T02:07:58.430 に答える
15

それぞれのケースは異なります:

.*([a-m\/]*).*

は存在する必要がないため、最初.*の文字列はおそらく文字列全体に一致し、最初の文字列は貪欲で最初に表示されます。[a-m/]*

.*([a-m\/]+).*

最初.*の文字列は、一致する最後の文字までの文字列全体に一致します。[a-m/]必要なのは 1 つだけであり、最初の文字列*は貪欲で最初に来るからです。

.*?([a-m\/]*).*

最初.*?の文字列は に一致する最初の文字まで一致します。これは貪欲ではない[a-m/]ためです。*?[a-m/]**.*

于 2012-10-01T02:27:59.750 に答える
12

あなたの例の .* の機能は、含まれている式が何かで囲まれている (または何もない) ことを確認することです。ドットは任意の文字を表し、アスタリスクは前の文字を任意の回数繰り返すことができる (またはまったく繰り返さない) ことを示します。

于 2012-10-01T02:11:48.080 に答える
10

.* は、「任意の文字、任意の回数の繰り返し」を意味します。

于 2012-10-01T02:10:40.890 に答える