說我有字符串Hello {{name}}, how are you doing today?
我試圖從該字符串抓name
。我們有/\{{2}[a-z0-9]*\}{2}/gi
。問題是,它抓住{{name}}
而不是name
。沒有全局標誌,它工作正常,但我試圖讓每個單詞的實例在雙括號內,所以它不是很正確......我不是正則表達式專家,所以我希望有人能幫助我... ...一個(簡單的?)RegEx問題的全球非捕獲組
2
A
回答
4
最好的解決方案是使用lookaround斷言,以便{{
和}}
不會被拾取,但JavaScript正則表達式不支持倒序,它只支持lookahead。
那麼一個選擇是你的文字放在一個捕獲組,並抓住裏面是什麼:
/\{{2}([a-z0-9]*)\}{2}/gi
讓每一個捕捉,使RegExp
對象與您正則表達式,並通過其exec()
函數的結果迭代。例如:
var str = 'Hello {{name}}, how are you doing {{date}}?';
var re = /\{{2}([a-z0-9]*)\}{2}/gi;
var words = [];
var match;
while (match = re.exec(str)) {
words.push(match[1]);
}
或者像濃湯建議在他的評論,手動從比賽的陣列剝離出{{
和}}
。
0
是啊如所提到的,模式匹配對2開閉括號是要走的途徑(假設名字不具有內本身在2號的連續的大括號,無論是開/關)
/\{{2}([a-z0-9]+)*\}{2}/gi
相關問題
- 1. 問題的簡單的regex
- 2. 簡單的regex問題
- 3. 簡單的regex問題
- 4. Javascript:簡化了RegEx的非表達式進入捕獲組
- 5. REGEX非捕獲組不工作
- 6. 關於數組的一個非常簡單的問題
- 7. PHP簡單的regex的問題
- 8. 的.htaccess重寫簡單的regex問題
- 9. 遇到一個非常簡單的PHP數組問題
- 10. 簡單的regex理解問題
- 11. 帶有捕獲組的RegEx中的空白問題
- 12. RegEx的另一個問題
- 13. 非常非常簡單的MVVM問題
- 14. 非捕獲組內的捕獲組
- 15. 一個非常簡單的正則表達式的問題
- 16. 運行一個非常簡單的Python程序的問題
- 17. 簡單數組的問題
- 18. 數組的簡單問題
- 19. 簡單的組裝問題
- 20. Ruby正則表達式,只有一個捕獲(非常簡單!)
- 21. 這個真正簡單的RegEx表達式有什麼問題?
- 22. Python的問題與全球?
- 23. Regex的靜態組問題
- 24. extjs的全球嘗試捕獲
- 25. QEventfilter類的全球事件捕獲
- 26. 服務的全球嘗試捕獲
- 27. JS RegEx替換未捕獲的組?
- 28. 一個非常簡單的C++ OOP問題
- 29. C/C++鏈接問題與一個非常簡單的設置
- 30. 一個非常簡單的SSRS 2008問題
令人驚訝的對我,但是這並不工作,因爲OP說,因爲/ g標誌的。它基本上沒有區別。我想這是因爲JavaScript如何處理正則表達式;在Perl中它會正常工作。 – 2011-01-20 15:21:47