"dhdhd89(dd)"
匹配對這個表達式
.+?(?:\()
..returns 「dhdhd89(」。
爲什麼包括在捕獲開始括號? 兩種不同的工具,以及.NET Regex類,返回相同的結果。所以我收集這裏有一些我不明白這一點。
我閱讀我的正則表達式的方式是。
- 匹配任何字符,至少一個匹配項。儘可能少。
- 匹配的字符串後面應緊跟一個開始括號,但不包含在捕獲中。
我可以找到解決方法,但我仍然想知道發生了什麼。
"dhdhd89(dd)"
匹配對這個表達式
.+?(?:\()
..returns 「dhdhd89(」。
爲什麼包括在捕獲開始括號? 兩種不同的工具,以及.NET Regex類,返回相同的結果。所以我收集這裏有一些我不明白這一點。
我閱讀我的正則表達式的方式是。
我可以找到解決方法,但我仍然想知道發生了什麼。
只需將未捕獲組設置爲肯定的超前斷言。
.+?(?=\()
.+?
非貪婪的一個或多個字符,接着一個左括號匹配。斷言不會匹配任何字符,但斷言匹配是否可能。但非捕獲組將執行匹配操作。當您使用
^([^(]+)
:
你沒有帶定義捕獲組,那麼我猜您顯示整場比賽(組0),你可以這樣做:
(.+?)(?:\()
和你想要的字符串是在第1組
或使用作爲@AvinashRaj說的前瞻。
是的,我讀了錯誤的例子。我認爲「(?:」是如何定義一個非捕獲組,Expresso確定它是這樣的,但是替換:for =使它全部正常工作 – Tormod 2015-03-02 13:09:35