[英]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.