Javascript仍然很新,我正在努力使用多行正则表达式。
通常,正则表达式的边界对于行的开头是^
,对于当前行的结尾是$
。因此,我的正则表达式受到约束,只能在^
和$
之间运行。
现在处于多线模式,如何设置边界?我看过几个例子,它只是在逃避我。
如果我的Feed看起来像这样
Joe's item list
Item one is Abc
Item two is xyz
Item three is 123
End of Item List
我的典型正则表达式看起来像^Item (\w+) is (\w+)$
。
但是我希望我的正则表达式只在开始和结束行之间触发,并且想要抓住这是Joe的项目列表。我只是在考虑这个贝克维奇认为我应该使用多线正则表达式吗?
答案 0 :(得分:0)
您可以在javascript中使用多行模式和m
修饰符。全局g
修饰符表示它将返回包含所有匹配项的数组:
JSFiddle
/^Item (\w+) is (\w+)$/gm
我不确定你是如何使用你的正则表达式或者你认为使用多行正则表达式可能有问题的意思...但这可以模仿没有多线模式,如下所示:
JSFiddle
/(?:^|\n)Item (\w+) is (\w+)(?=\n|$)/g
如果您想要取出捕获组,您可以执行以下操作:
JSFiddle
var matches = []
var regex = /^Item (\w+) is (\w+)$/gm;
var match = null;
while (match = regex.exec(str)) {
matches.push({
itemNumber: match[1],
itemName: match[2]
});
}