【发布时间】:2012-12-14 10:51:16
【问题描述】:
我有这个正则表达式可以从文本中提取双字
/[A-Za-z]+\s[A-Za-z]+/g
还有这个示例文本
Mary had a little lamb
我的输出是这样的
[0] - Mary had; [1] - a little;
而我的预期输出是这样的:
[0] - Mary had; [1] - had a; [2] - a little; [3] - little lamb
我怎样才能实现这个输出?据我了解,搜索索引移动到第一个匹配项的末尾。我怎样才能把它移回一个字?
【问题讨论】:
-
仅供参考:
\w+匹配一个单词。比[a-zA-Z]+更简单、更全面的证明:-) -
由于存在重叠部分,正则表达式必须具有前瞻以避免消耗输入,并且您必须捕获前瞻内匹配的文本。
split不起作用,因为 JS 拆分函数忽略了捕获组,这是挑选重叠部分所必需的(某些语言如 C# 或 Ruby 将包含捕获的文本)。match也不起作用,因为它会忽略捕获带有g标志的组。不确定是否有任何其他方式可以让您使用正则表达式。 -
@FlorianMargaine:
\w和[a-zA-Z]是完全不同的东西。\w,当写入字符类时,[a-zA-Z0-9_]将匹配英文字母、数字和下划线_。是否万无一失,这取决于OP的要求。 -
@nhahtdh OP 要求是“提取双字”。显然对于他的要求更加万无一失。是的,我简化了一点,但结果还是一样:他在找
\w+。 -
人们似乎完全不知道
RegExp.lastIndex。
标签: javascript regex