Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 将正则表达式范围限制为仅匹配代码段中的项_Regex - Fatal编程技术网

Regex 将正则表达式范围限制为仅匹配代码段中的项

Regex 将正则表达式范围限制为仅匹配代码段中的项,regex,Regex,这是一个一般的正则表达式问题 假设我有以下代码: function (item1, item2, item3) { var item4 = null var item5 = null } 我知道这是javascript,但我不想要一个特定于javascript的答案:我对纯正则表达式的答案很好奇 假设我想要编写匹配任何以“item”开头的单词的正则表达式,但我只想要括号之间的匹配 所以我的问题是:有没有一种方法可以编写一个正则表达式查询来匹配所有以项开始,但也在paren之间的

这是一个一般的正则表达式问题

假设我有以下代码:

function (item1, item2, item3) {
    var item4 = null
    var item5 = null
}
我知道这是javascript,但我不想要一个特定于javascript的答案:我对纯正则表达式的答案很好奇

假设我想要编写匹配任何以“item”开头的单词的正则表达式,但我只想要括号之间的匹配

所以我的问题是:有没有一种方法可以编写一个正则表达式查询来匹配所有以
项开始,但也在paren之间的内容?想把我的正则表达式范围限制在parens中的东西吗


更新:大家都知道,我之所以这么问是因为我正在研究Atom(文本编辑器)的语言支持,据我所知,Atom只支持纯正则表达式来匹配模式以添加语言样式。因此,即使我正在解析JS,我仍然坚持使用纯正则表达式。

拉出括号中的内容,然后查看它们的内部

str=“函数(项目1、项目2、项目3){\
var item4=null\
var item5=null\
}";
var结果=[].concat(
str.match(/\(.*?\)/g)
.map(功能(子匹配){
返回submatch.match(/\bitem\w*\b/g);
})
);

记录(结果)您可以尝试下面的正则表达式

(?:[^()]*(?=\()|[^()]*$)(*SKIP)(*F)|item\w+

你指的是哪个括号?你试过了吗:
/\([^]*?item[^]*\)/
我知道这是可能的,但我想从一般正则表达式的角度知道是否有办法限制搜索范围。@IsAchess我担心你是“单一正则表达式炎”疾病的受害者,一种类似埃博拉病毒的病毒,其症状是试图用一个巨大的正则表达式解决所有问题。我所做的就是限制搜索范围,使用一个regexp提取范围,然后使用另一个regexp在其中搜索。如果你绝对坚持在一个regexp中这样做,那么可能会有一些方法涉及消极或积极的注视,或注视落后或环顾四周,或者你做了什么,但是说实话,这有什么意义呢?你最终会得到一些无法阅读和维护的东西。哈哈,我完全理解。我问这个问题的原因是因为我正在为Atom(文本编辑器)开发一个语言支持包,它限制了我使用钱包正则表达式,所以我没有任何选择。另外,我仍然很想知道这是否可能,如果只是为了增加我对正则表达式的理解。假设相关的风格是JS?你应该在你的问题中添加关于Atom的注释,否则人们可能会质疑你在尝试“解析”时的理智这是什么regexp风格的?Pcerl兼容的正则表达式,包含在Perl、PHP、R等语言中