[英]Regular Expression to find complex markers
我想使用JavaScript的正则表达式
/marker\d+"?(\w+)"?\s/gi
在这样的字符串中:
IDoHaveMarker1"apple" IDoAlsoHaveAMarker352pear LastPointMakingmarker3134"foo"
我希望它返回这样的数组:
[ "apple", "pear", "foo" ]
引号是为了明确它们是字符串。 他们不应该出现在结果中。
如果您询问如何实际使用正则表达式:
要获取多个(全局)匹配的所有捕获,您必须在JavaScript中使用循环和exec
:
var regex = /marker\d+"?(\w+)/gi;
var result = [];
var match;
while (match = regex.exec(input)) {
result.push(match[1]);
}
(请注意,如果只对捕获感兴趣,可以省略结尾的"?\\s?
,因为它们始终是可选的,因此它们不会影响匹配的结果。)
不, g
不允许您一次调用所有这些操作。 如果省略了g
则exec
每次都会返回相同的匹配项。
正如Blender提到的,如果要排除诸如Marker13"something Marker14bar
(不匹配的"
),则需要使用另一个捕获组和一个反向引用。 请注意,这会将您想要的捕获推送到索引2
:
var regex = /marker\d+("?)(\w+)\1/gi;
var result = [];
var match;
while (match = regex.exec(input)) {
result.push(match[2]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.