2013-05-27 28 views
1

我明白點符號,星號和問號分別表示元字符的含義,我理解什麼。*表示,但在表達式中。*? (?)在這方面做了什麼?Regex。*是什麼?意思?

+8

下,這是一個非常* *基本的問題,很容易在http://www.regular-expressions.info/reference.html閱讀的基本知識回答。不要這麼懶。 ;-) – Tomalak

+0

http://stackoverflow.com/questions/3075130/difference-between-and-for-regex?lq=1 – Tommi

+0

@Tomalak感謝您指出參考。我實際上是在同一網站上的教程 - 我不知道我是如何錯過的。我應該看起來更仔細:) – neodymium

回答

16

.*?意思是「匹配零個或多個字符,但儘可能少的「。它被稱爲非貪婪匹配

.*意味着幾乎除了儘可能匹配(貪婪匹配)是相同的。

實例:

  • 使用f.*?a匹配foo bar baz導致foo ba(第一a後停止)
  • 使用f.*afoo bar ba匹配foo bar baz結果
+2

這不是說它會一直沒有匹配嗎?因爲什麼都不可能,並且它是最短的可能的 –

+3

@TomerArazy是的,如果它是表達式中的最後一個東西,它將永遠不會匹配。如果出現以下情況,它會匹配更多。 – Tomalak

3

後綴'(後最後a停止)一個量詞,如*+,與?使其變得懶惰,意味着它儘可能與ltitle匹配。這是如何工作

的例子可以發現hereLaziness Instead of Greediness