簡體   English   中英

正則表達式以查找復雜的標記

[英]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不允許您一次調用所有這些操作。 如果省略了gexec每次都會返回相同的匹配項。

正如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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM