2012-10-01 19 views
16

私は既に.*が0以上の任意の文字を意味することを理解していますが、 誰かが次の作業でどのようにどのように説明されますか?どうやって*(ドットスター)?

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

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

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

正規表現では、 '.'は数値、アルファベット文字、またはその他の特殊文字である任意の文字を表します。 '*'は0回以上を意味します。 – asgs

+2

それは十分に簡単です。シンボルは何回も存在しますが、その下にはニュアンスがあります。さらに、正規表現では非常に中心的な概念です。今すぐ出て、正規表現についてのバックグラウンドを読んでください。あなたはさらに、より速く、そうするでしょう。 –

答えて

6

各ケースが異なります。

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

[a-m/]が存在することが必要とされていないため、最初の.*はおそらく、文字列全体にマッチし、最初の*は貪欲で、最初に来ます。 .*([a-m/]+).*

最初.*

は一つだけが必要とされているので[a-m/]と一致する最後の文字までの文字列全体にマッチし、最初の*は貪欲で、最初に来ます。 *?がない貪欲であるため、

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

最初.*?は、[a-m/]と一致する最初の文字までの文字列に一致します+は、最後の貪欲で、かつので、その後[a-m/]+は、それができるすべてにマッチします.*は残りの文字列と一致します。

+0

うまくやった! +1 – XIVSolutions

10

ドットは、ここに行くことができるものを意味し、星がそう.*が空の文字列を含む任意の文字列を、受け入れ 少なくとも0回を意味します。

+2

どうやってやったのですか?あなたは「本当の質問ではない」と答えました。 –

+0

@Thereisnothingwecando: "本当の質問ではない... 10月2日12時9時38分" Ionutはイヤーラーに答えました(それはまだ本当の質問でした:))。 –

4

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

8

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

関連する問題