(已解决 - 目前无法使用Javascript Regex排除部分所选字符串截至此发布日期)
搜索一下,无法找到这个案例的明确例子。
目前我有这个文本块:
Characteristics
Content: 100% Polyurethane
Backing: Polyester
Weight: 20 oz/ly (620 gr/lm)
Width: 54" (137cm)
Bolt Size: 35 yards (32 m)
Maintenance: W/B-Clean w
我希望在Content:
之后提取任何文字(注意空格)
这样就可以提取100% Polyurethane
目前我有这个 - (但它包括Content:
):
http://regexr.com/3dbct
我的目的是拥有一个可以在Width:
,Backing:
等之后提取任何内容的正则表达式命令。
编辑:要求我们无法使用任何javascript,只有正则表达式
答案 0 :(得分:1)
答案 1 :(得分:0)
您的示例有效,您只需要获取捕获组的值(括号中的内容)。
注意:正则表达式中的m
标志表示:
多行;将开始和结束字符(^和$)视为多行(即匹配每行的开头或结尾(由\ n或\ r分隔),而不仅仅是整个输入字符串的开头或结尾)< / p>
此外,exec
方法返回一个数组(如果没有匹配则返回null
)。数组中的第一项(索引0)是完全匹配,之后的每个索引都是按顺序的每个捕获组。因此,索引1是第一个捕获组,在这种情况下就是你想要的。
更新:我使它更通用。现在它循环遍历一组数据标签,并在每个数据标签之后抓取文本。
var dataLabels = ['Content','Backing','Weight','Width','Bolt Size','Maintenance'];
var input = 'Characteristics\nContent: 100% Polyurethane\nBacking: Polyester\nWeight: 20 oz/ly (620 gr/lm)\nWidth: 54" (137cm)\nBolt Size: 35 yards (32 m)\nMaintenance: W/B-Clean w';
var regex, i, match;
for(i = 0; i < dataLabels.length; i++) {
regex = new RegExp(dataLabels[i] + ': (.*)', 'm');
match = regex.exec(input);
if(match !== null) {
// do something with this
console.log(dataLabels[i] + ' = ' + match[1]);
}
}