Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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_Regex Group - Fatal编程技术网

Regex 如何提取组的所有匹配项

Regex 如何提取组的所有匹配项,regex,regex-group,Regex,Regex Group,希望有人能帮我解决我的问题。我试图使用相同的模式在所有值字段的文本范围内捕获相同的组 我试图从html中捕获每个仅与属性_2相关的“值”。 这是我的看法: 我使用正则表达式从Gatling工具(Scala)的响应体中提取值。 这将保存列表中的所有值。 通过css选择器实现 select[id='product_attribute_2'] [value] 您可以使用vanilla JavaScript提取值,如下所示: const options=Array.from(document.q

希望有人能帮我解决我的问题。我试图使用相同的模式在所有值字段的文本范围内捕获相同的组

我试图从html中捕获每个仅与属性_2相关的“值”。 这是我的看法:

我使用正则表达式从Gatling工具(Scala)的响应体中提取值。 这将保存列表中的所有值。

通过css选择器实现

select[id='product_attribute_2'] [value]

您可以使用vanilla JavaScript提取值,如下所示:

const options=Array.from(document.querySelector('#product_attribute_2').children);
const values=options.map(x=>Number(x.getAttribute('value'));
console.log(值)

2.2千兆赫
2.5千兆赫
2GB
4GB
8GB

如果我们必须为此问题应用正则表达式,我们可以从以下简单表达式开始:

.*product_attribute_2.*?|option value="(\d+)"|<\/select>.* 
[\s\S]*product_attribute_2|option value="(\d+)"|<\/select>[\s\S]*
m
模式下:

const regex=/.*product_attribute_2.*?| option value=“(\d+)|。*/gs;
常量str=`
2.2千兆赫
2.5千兆赫
2GB
4GB
8GB
`;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});

}
您可以尝试改用dom或domparser。为什么您要使用正则表达式,而这可以通过使用纯JavaScripts来实现这是用于性能测试脚本的。但是你给了我一个使用css解析器的想法,为什么你不能使用常规的dom方法呢?我不知道我是否可以在框架(领域特定语言)中使用它。我想regexp会更简单,资源消耗更少。几乎是我需要的,但它也从“产品属性1”中获得了价值,谢谢。这是我的工作。[\s\s]*产品_属性_2|选项值=“(\d+)”|[\s\s]*
.*product_attribute_2.*?|option value="(\d+)"|<\/select>.* 
[\s\S]*product_attribute_2|option value="(\d+)"|<\/select>[\s\S]*