Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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
Javascript 如何在不同的组中匹配X个整词数?_Javascript_Regex - Fatal编程技术网

Javascript 如何在不同的组中匹配X个整词数?

Javascript 如何在不同的组中匹配X个整词数?,javascript,regex,Javascript,Regex,我目前正在尝试将搜索词两侧的X个单词数与三个匹配组进行匹配,包括词前的X个单词数、词后的X个单词数 值得注意的是,我需要这个正则表达式在Javascript中工作 例如,如果我的完整字符串为: “你好,这是一个长句子,在某个地方有一个匹配的单词” 如果我每边要匹配的单词的X号为2,搜索词为“句子”,我希望我的正则表达式匹配返回: 第1组:“长时间” 第2组:“判决” 第三组:“有a” 我试过用paren来组成小组,也试过用\w速记来匹配整个单词 这让我非常接近,匹配我想要的一切,但只是没有将

我目前正在尝试将搜索词两侧的X个单词数与三个匹配组进行匹配,包括词前的X个单词数、词后的X个单词数

值得注意的是,我需要这个正则表达式在Javascript中工作

例如,如果我的完整字符串为: “你好,这是一个长句子,在某个地方有一个匹配的单词”

如果我每边要匹配的单词的X号为2,搜索词为“句子”,我希望我的正则表达式匹配返回:

  • 第1组:“长时间”
  • 第2组:“判决”
  • 第三组:“有a”
我试过用paren来组成小组,也试过用
\w
速记来匹配整个单词

这让我非常接近,匹配我想要的一切,但只是没有将匹配分为3个单独的组

(\w+ ){0,2}(string)( \w+){0,2}
要测试的字符串:
这是我的长字符串,我知道它是什么

预期成果:

  • 第一组:“我的龙”
  • 第2组:“字符串”
  • 第三组:“和我”

问题在于,您在捕获组中只有一个单词,然后您在重复该组,因此,只有最后一个出现的单词才会被放置在捕获组中。您需要将一个单词放入非捕获组,然后将X个单词放入捕获组

试着这样做:

((?:\w+[]){2})(字符串)((?:[]\w+{2})

Javascript示例:

const regex=/((?:\w+[]){2})(string)((?:[]\w+{2})/gm;
const str=`这是我的长字符串,我知道它是什么';
设m=regex.exec(str);
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);

});
您需要在一个组中捕获
(\w+{0,2}
,与
(\w+{0,2}
相同。类似于
/((?:\w+{0,2})(字符串)((?:\w+{0,2})/
/(?:\w+\s){0,2})(字符串)((?:\s\w+{0,2})/

例如:

var string=“这是我的长字符串,我知道它是什么”;
log(string.match(/((?:\w+\s){0,2})(string)((?:\s\w+{0,2})/)