用于提取组的 JavaScript 正则表达式迭代器

2024-04-01

假设我们有以下文本:“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(使用前将#替换为@)

用于提取组的 JavaScript 正则表达式迭代器 的相关文章

随机推荐

  • 监控 kubernetes 作业

    我的 Kubernetes 作业需要不同的时间才能完成 4 到 8 分钟之间 有什么方法可以让我知道工作何时完成 而不是在最坏的情况下等待 8 分钟 我有一个执行以下操作的测试用例 1 Submits the kubernetes job
  • Google 云端硬盘 + ACTION_GET_CONTENT

    Google 云端硬盘似乎有一个响应 GET CONTENT 操作的活动 但未导出 我可以在应用程序中使用另一种方法从云端硬盘中提取内容 而无需启动该过程from驾驶 自己编写一个选择器 选择器活动并使用后端 API 列出和打开文件显然是一
  • 函数返回类型不清楚的问题

    我有以下相当简单的 F 函数 let FormatValue formatProvider IFormatProvider valueSuffix value match value gt Convert ToDecimal valueSu
  • 在不同机器上绘制图元文件时缩放比例不同

    我在使用以毫米为测量单位的图元文件的 WinForms 应用程序中获得一致的缩放时遇到问题 我编写了一个小示例应用程序来说明该问题 This is how the application looks on a Windows 7 deskt
  • 函数模板和模板函数有什么区别?

    函数模板和模板函数有什么区别 术语 功能模板 是指一种模板 术语 模板函数 有时用于表示同一事物 有时用于表示从函数模板实例化的函数 最好通过对前者使用 函数模板 和对后者使用 函数模板实例 或 函数模板实例 之类的内容来避免这种歧义 请注
  • 在 UWP (C#) 中尝试运行桌面扩展应用程序时“访问被拒绝”

    我正在尝试运行教程代码FullTrustProcess启动器 https learn microsoft com en us uwp api Windows ApplicationModel FullTrustProcessLauncher
  • R如何计算两行之间的“变化百分比”?

    我喜欢在 Item 时计算 两行之间的变化百分比 行的变化 对于第一行项目 我可以放置一些文本或空白 例如 跳过 或空白都可以 因为没有比较前一行的相同内容 物品 df lt data frame period rep 1 4 2 farm
  • 更改对象列表中的一个元素属性值也会更改所有元素值

    这是我的班级 名为 Objek public class Objek public int id public int tipe public int bentuk public List
  • 托管 WinRT API 是否包含计算 MD5 哈希值的方法? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在用 C 编写的 Metro S
  • 如何使用 Groovy 从 Oracle 获取游标?

    我正在使用一个Groovy脚本在Mule ESB从中获取输出参数Oracle存储过程 包括游标 并出现异常 最小的例子 import groovy sql Sql import oracle jdbc pool OracleDataSour
  • 如何将 DFM 转换为数据帧但保留文档变量?

    我正在使用 Quanteda 包和有关它的非常好的教程来对纸质文章进行各种操作 我通过在 mainwordsDFM 中选择特定单词并使用textstat frequency mainwordsDFM group Date 然后将结果转换为数
  • 在 Backbone.js 中,为什么静默更改最终会触发更改事件?

    当我经过时 silent true 在 Backbone 模型中设置属性时 为什么不直接抑制change attribute事件 下次更改属性时触发该事件有什么好处 Update Backbone 0 9 10 改变了传递行为 silent
  • 如何在 JavaScript 中四舍五入到最接近的 100

    我想四舍五入到nearest始终为 100 无论该值是 101 还是 199 它都应向上舍入为 200 例如 var number 1233 use something like Math round to round up to alwa
  • 在Excel中检索单元格名称

    有没有办法在另一个单元格中显示特定单元格的单元格名称 我想在相邻单元格中显示单元格名称 以便用户无需单击即可识别单元格名称 此函数将给出单元格所属的 NamedRange 的名称 Public Function CellName oCell
  • IPSec vs OpenSSL vs PGP [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 IPSec 用于 IP 级别 SSL 用于传输级别 PGP 用于应用级别 在一些讲座中不是这样说的 IPSEC 最通用的解决方案 但灵活性最差 SSL
  • PostgreSQL 无间隙序列

    我正在从 MySql 迁移到 Postgres 我注意到当您从 MySql 中删除行时 这些行的唯一 id 在您创建新行时会被重新使用 使用 Postgres 如果您创建行并删除它们 则不会再次使用唯一的 id Postgres 中出现这种
  • 是否可以在 Twitter-bootstrap 4 $theme-colors 数组中使用 CSS 变量?

    在 Bootstrap 4 中 您可以使用以下数组定义和 或覆盖默认颜色 如此处记录的 https getbootstrap com docs 4 2 getting started theming modify map theme col
  • 合并两个对象并在冲突时覆盖值

    我正在尝试合并两个对象并覆盖过程中的值 是否可以与下划线 http underscorejs org 执行以下操作 我可以不使用下划线 我只是希望它简单一些 var obj1 hello xxx win xxx var obj2 hello
  • 将 Spark MLlib 模型从 R 记录(然后应用)到 MLflow

    我正在使用 Spark MLlib 函数 通过sparklyr包 来训练模型 但现在似乎无法将模型保存在MLflow以供将来使用 iris tbl lt sparklyr copy to sc iris iris spark mdl mll
  • 用于提取组的 JavaScript 正则表达式迭代器

    假设我们有以下文本 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