2017-09-20 107 views
-1

以下兩個表達式之間的區別是什麼? 1. (\S+) 2. (\S+?)正則表達式( S +?)vs( S +))

如果有人能解釋這一點,我將不勝感激。

謝謝,

+0

https://regex101.com/基於快速測試我這裏跑,'(\ S + )'會找到你所有的單詞,'(\ S +?)'會找到你的單個字符。儘管我在答覆中將其作爲實際答案發布,但我還是不夠自信。 – phroureo

+1

查看https://stackoverflow.com/questions/25528452/in-a-regex-what-c​​hanges-when-you-add-a-question-mark-to –

回答

0

第一裝置匹配單個字符是一個非空白字符,一個和無限次,多次儘可能之間,用之於根據需要(貪婪)

第二裝置匹配單個字符是一個非空白字符,一個和無限次之間,儘可能少的次數儘可能,擴大視需要(懶惰)

區別在於貪婪或懶惰的重複。來自Regex Buddy幫助文件:

貪婪的量詞將首先嚐試重複令牌儘可能多次,並逐漸放棄匹配作爲引擎回溯找到總體匹配。一個懶惰的量詞將首先根據需要重複該記號,並且隨着引擎在正則表達式中回溯以找到整體匹配,逐漸擴展匹配。

的差異可以在圖片中看到如下:

Greedy quantifier

Lazy quantifier

+0

儘管兩個圖像看起來都是一樣的有不同的網址。 – Arjan

+1

@Arjan:謝謝。以某種方式設法兩次粘貼相同的圖像。衛生署!固定。感謝您指出了這一點。 –

相關問題