我有我的正則表達式/'(.*)(?:(?:'\s*,\s*)|(?:'\)))/
和我的測試代碼('He said, "You're cool."' , 'Rawr')
(我的測試代碼會模擬參數傳遞給函數。)
我會解釋我的正則表達式按照我的理解,希望你們幾個可以闡明我的問題。
1)/'
意味着在匹配字符串的開頭,需要有'
2)(.*)
裝置捕獲的任何字符以外\n
0次或多次
3)(?:(?:4)|(?:5))
裝置不捕獲但儘量執行步驟4,如果它不工作,嘗試第5步
4)(?:'\s*,\s*)
手段不捕獲,但需要有一個'
0或多個空格字符,隨後是,
有0個或多個空白字符
5)(?:'\))
手段不捕獲,但需要有')
如此看來,它應該返回這個(這就是我想要的):
'
+ He said, "You're cool."
+ ' ,
但它返回:
'
+ He said, "You're cool."' , 'Rawr
+ ')
如果我改變我的測試代碼('He said, "You're cool."' , 'Rawr'
(沒有結束括號),它返回我想要的東西,但只要我補充一點,最後一個小括號,然後好像是我的OR操作爲所欲爲就是了。如果有逗號,我希望它先測試,如果有逗號,並且如果沒有一個括號的檢查,那麼就打破它。
我試過切換第4步和第5步的點,但OR運算符似乎始終默認爲(?:'\))
一側。 我怎樣才能匹配儘可能最短的金額?RegExp - 我怎樣才能匹配儘可能最短的金額?
8
A
回答
15
我不認爲你的問題是OR運算符,而是greediness的.*
。它會匹配你的完整字符串,然後返回 -track直到下列表達式匹配。在這個回溯過程中的第一場比賽將是'He said, "You're cool."' , 'Rawr
+ ')
。改爲嘗試.*?
!
相關問題
- 1. regmatch_t我怎樣才能得到匹配?
- 2. 我怎樣才能金額/組通過此表的結果
- 3. 我怎樣才能縮短這一點?
- 4. 我怎樣才能
- 5. 我怎樣才能
- 6. 我怎樣才能
- 7. 我怎樣才能
- 8. REGEXP使用egrep匹配美元金額
- 9. 匹配儘可能少(貪婪樣)
- 10. çregex.h可能的最短匹配
- 11. 我怎樣才能的MSBuild
- 12. 我怎樣才能讓在裝配
- 13. 我怎樣才能匹配的模式如下
- 14. 我怎樣才能獲得RegEx的所有匹配?
- 15. 怎樣才能
- 16. 我怎樣才能通過數組grep,而過濾出匹配?
- 17. 我怎樣才能做一個「加入」在匹配數據
- 18. 我怎樣才能在Ionic2
- 19. 我怎樣才能在Zebble
- 20. 我怎樣才能在PreferenceScreen
- 21. 我怎樣才能在vim
- 22. 我怎樣才能繞UIView
- 23. 我怎樣才能標籤
- 24. 我怎樣才能在圖
- 25. 我怎樣才能在Python
- 26. 我怎樣才能event_search_max?
- 27. 我怎樣才能在VB.net
- 28. 我怎樣才能從URL
- 29. 我怎樣才能在DB2
- 30. 我怎樣才能在Java
字符串的開頭將是'/ ^',而不是'/',fwiw。就我個人而言,我不相信我會使用正則表達式來表達你想要做的事情,而是一個小的解析器。令人困惑的正則表達式令人困惑。 –
@DaveNewton - 是的,我知道。這就是爲什麼我在匹配的字符串開頭說的原因。也許我應該在字符串的匹配部分的開始處說。或者當它開始比賽時,它需要以''開始。 – Aust