我有一个字符串,其中包含xml格式的数据,如
str = "<p><a>_a_10gd_</a><a>_a_xy8a_</a><a>_a_1020_</a><a>_a_dfa7_</a><a>_a_ABCD_</a></p>";
我想要做的是,我想从所有可能的马赫中捕获_abc__(Value)__
。我这样试过了
假设我在JavaScript中这样做: -
var regex = /_a_(.+)_/g ;
var str = "<a>_a_10gd_</a><a>_a_xy8a_</a><a>_a_1020_</a><a>_a_dfa7_</a><a>_a_ABCD_</a>";
while(m = regex.exec(str)){
console.log(m[1]); // m[1] should contains each mach
}
我希望得到这样一个阵列中的所有机械组: -
var a = ['10gd', 'xy8a', '1020', 'dfa7', 'ABCD'];
请告诉我正则表达式需要什么,并解释它也因为我是regex及其捕获组的新手。
答案 0 :(得分:1)
只需将(.+)
更改为(.+?)
即可:
var regex = /_a_(.+?)_/g ;
var str = "<a>_a_10gd_</a><a>_a_xy8a_</a><a>_a_1020_</a><a>_a_dfa7_</a><a>_a_ABCD_</a>";
while(m = regex.exec(str)){
console.log(m[1]); // m[1] should contains each mach
}
有关贪婪的更多信息,请参阅What do lazy and greedy mean in the context of regular expressions?
答案 1 :(得分:0)
另一种选择是只接受除_之前的_之外的字符(而不是你使用过的。),如下所示:
var regex = /_a_([^_]+)_/g ;