具體來說,我需要它在 VSCode 搜索中進行查找和替換。
我嘗試過的: buildFromArray\(\[(\s*(\[.*\]),?\s*)*
我似乎無法得到正確的正則運算式。我也試過buildFromArray在正則運算式中用作后視,如下所示:(?<=buildFromArray\(\[\s*)(?:(\[.*\]),?\n\s*)*
這適用于 regexr.com 但 vscode 給了我這個錯誤:
后視斷言不是固定長度
我需要匹配這些測驗:
buildFromArray([
[1, 2, -1, -2],
[3, 4, true, "test"],
[2, 45, -3, -4],
])
buildFromArray([['test']], {useArrayArithmetic: true})
并為引數生成捕獲組,如下所示:
[1, 2, -1, -2]
[3, 4, true, "test"]
[2, 45, -3, -4]
和:
['test']
uj5u.com熱心網友回復:
我很驚訝地看到 VSCode 對 Regex 如此原始(我認為它使用了 .Net Regex,但顯然不是 - .Net 可以捕獲重復組并支持使用 var 長度向后查看)。
所以我認為你最好的選擇是重復模式(并使第二和第三組可選,如下所示:
buildFromArray\(\[\s*(\[[^\]] \])(?:,\s*(\[[^\]] \]))?(?:,\s*(\[[^\]] \]))?
如您所見,(?:,\s*(\[[^\]] \]))?只是重復。它創建三個組。但是,在您的第二個測驗中,group1 和 group2 將為空。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/401068.html
上一篇:從向量中提取字符元素
下一篇:為什么javascript正則運算式/^abc/g不將“abc\nabc\n”與match(re).length計算為兩個?[復制]
