說我有字符串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. 關於數組的一個非常簡單的問題
- 5. PHP簡單的regex的問題
- 6. 的.htaccess重寫簡單的regex問題
- 7. 遇到一個非常簡單的PHP數組問題
- 8. 帶有捕獲組的RegEx中的空白問題
- 9. 捕獲全球Keydown事件(不簡單觀察)
- 10. RegEx的另一個問題
- 11. 非常非常簡單的MVVM問題
- 12. 非捕獲組內的捕獲組
- 13. Ruby正則表達式,只有一個捕獲(非常簡單!)
- 14. 一個非常簡單的正則表達式的問題
- 15. 運行一個非常簡單的Python程序的問題
- 16. 簡單的組裝問題
- 17. 這個真正簡單的RegEx表達式有什麼問題?
- 18. QEventfilter類的全球事件捕獲
- 19. JS RegEx替換未捕獲的組?
- 20. 一個非常簡單的SSRS 2008問題
- 21. 一個非常簡單的C++ OOP問題
- 22. C/C++鏈接問題與一個非常簡單的設置
- 23. 簡單的regex不
- 24. 非常簡單的io問題C++
- 25. php-sprintf非常簡單的問題
- 26. 非常簡單的Ajax問題
- 27. 非常簡單的PHP添加問題
- 28. 從條件REGEX獲取捕獲組
- 29. 關於wxPython的一個簡單問題
- 30. 另一個簡單的jQuery問題
令人驚訝的對我,但是這並不工作,因爲OP說,因爲/ g標誌的。它基本上沒有區別。我想這是因爲JavaScript如何處理正則表達式;在Perl中它會正常工作。 – 2011-01-20 15:21:47