假设我们有以下文本:“1 a,2 b,3 c,4 d”和以下表达式:/\d (\w)/g
我们想要做的是提取正则表达式表示的a、b、c、d。
不幸的是 "1 a,2 b,3 c,4 d".match(/\d (\w)/g) 将产生一个数组: 1 a,2 b,3 c,4 d 和 RegExp.$1 将仅包含最后一场比赛的组,即 RegExp.$1 == 'd'。
我如何迭代这个正则表达式,以便我也可以提取组...我正在寻找一种内存效率高的解决方案,即某种迭代器对象
编辑:
它需要是通用的。我在这里只提供一个简单的例子。一种解决方案是循环遍历数组并在没有全局标志的情况下为每个项目重新应用正则表达式,但我发现这个解决方案有点愚蠢,尽管它似乎是唯一的方法。
var myregexp = /\d (\w)/g;
var match = myregexp.exec(subject);
while (match != null) {
// matched text: match[0]
// match start: match.index
// capturing group n: match[n]
match = myregexp.exec(subject);
}
(无耻地摘自正则表达式好友 http://www.regexbuddy.com)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)