这是一般的正则表达式问题。
假设我有以下代码:
function (item1, item2, item3) {
var item4 = null
var item5 = null
}
我知道这个javascript,但我不想要一个特定于JavaScript的答案:我对纯正的正则表达式答案感到好奇。
假设我想编写匹配任何以" item"开头的单词的正则表达式,但我只需要在括号之间的匹配。
所以我的问题是:有没有办法编写一个正则表达式查询,该查询匹配以item
开头但又在parens之间的所有内容?就像一种将我的正则表达式范围限制在parens中的东西的方法?
更新:正如人们所知,我在问,因为我正在研究Atom(文本编辑器)的语言支持,据我所知,它只支持纯正则表达式匹配模式以添加语言样式。因此,即使我正在解析JS,我仍然坚持使用纯正则表达式。
答案 0 :(得分:0)
拉出带括号的东西,然后查看它们。
str="function (item1, item2, item3) {\
var item4 = null\
var item5 = null\
}";
var results = [].concat(
str.match(/\(.*?\)/g)
.map(function(submatch) {
return submatch.match(/\bitem\w*\b/g);
})
);
document.write(results);
此代码首先调用String#match
来检索输入的所有带括号的部分,因此在这种情况下它返回['(item, item2, item3)']
(包含一个元素的数组)。然后,它会调用该数组上的Array#map
,将每个元素转换为item*
的匹配列表(\b
匹配字边界,\w
匹配字母数字)。由于结果现在是嵌套数组([['item1', 'item2', item3']]
),我们使用Array#concat
将其展平。
答案 1 :(得分:0)