雷格斯:我怎么能把所有东西都放在绳子后面呢

  • 本文关键字:怎么能 雷格斯 regex
  • 更新时间 :
  • 英文 :


(已解决-目前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

我的目的是有一个regex命令,可以稍后提取Width:Backing:等之后的任何内容。

编辑:要求是我们不能使用任何javascript,只能使用regex

(?:Content|Backing|Width):s*(.*$)

在这里演示。

由于JavaScript正则表达式的限制,无法排除:之前的位,但您可以只捕获捕获组1中匹配的内容。

您的示例有效,您只需要获取捕获组的值(括号中的值)。

注意:正则表达式中的m标志表示:

多线;将开头和结尾字符(^和$)视为在多行上工作(即,匹配每行的开头或结尾(由\n或\r分隔),而不仅仅是整个输入字符串的开头或末尾)

此外,exec方法返回一个数组(如果不匹配,则返回null)。数组中的第一个项,索引0,是完全匹配项,之后的每个索引按顺序是每个捕获组。因此,索引1是第一个捕获组,这就是您在本例中想要的。

更新:我让它更通用。现在,它循环遍历一组数据标签,并获取每个标签后面的文本。

var dataLabels = ['Content','Backing','Weight','Width','Bolt Size','Maintenance'];
var input = 'CharacteristicsnContent: 100% PolyurethanenBacking: PolyesternWeight: 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]);
    }
}

最新更新