如何在 JavaScript 正则表达式中用 (n-1) 次出现的同一字符替换 (n) 次出现的字符

2023-12-13

我的数据是

Hello ***** World

I need

Hello **** World

所以基本上 5 次出现的星号被替换为 4 次出现的星号。我怎样才能做到这一点在正则表达式javascript中。

注意:星星的数量是动态的。

我尝试过此操作,但不确定如何替换捕获组:

console.log("Hello ***** World".replace(/[a-zA-Z](.*)/gm,"$1||$3"));

UPDATE:

Wiktor 的解决方案非常有效。但不确定如何将其转化为我在正则表达式中面临的实际问题。所以我想,发布我的实际问题是值得的。

我的数据是这样的:

1.  Hello


•   World

我需要这个

1.  Hello

•   World

我需要将之间的额外行数减少到 n-1

[Numeric].[Space][Any text]

and

•[Three Spaces][AnyText]

反之亦然

•[Three Spaces][AnyText]

and 

[Numeric].[Space][Any text]

注意:抱歉解释不好。我是正则表达式新手。


您可以捕获一个或多个星号,然后进行匹配而不捕获另一个(序列中的最后一个)星号,并替换为对组值的反向引用:

console.log("Hello ***** World".replace(/(\*+)\*/g, "$1"));

See the 正则表达式演示.

这里还有其他类似的解决方案:

console.log("Hello ***** World".replace(/(\*)\*(?!\*)/g, '$1'));
console.log("Hello ***** World".replace(/(?<=\*)\*(?!\*)/g, ''));

See 这个正则表达式演示 #2 and 正则表达式演示 #3.

In (\*)\*(?!\*), 首先*被捕获到组 1 中,然后匹配其右侧没有其他星号的星号,并且$1替换的作用与第一个解决方案相同。

The (?<=\*)\*(?!\*)正则表达式仅匹配左侧紧邻星号且右侧紧邻没有星号的任何星号(这就是替换模式为空的原因)。

将此应用到减少两个字符串之间的换行符数量问题可能看起来像

text = text.replace(/(\d+\.\s.*(?:\r\n?|\n)+)(?:\r\n?|\n)(?=•\s{3})/g, '$1').replace(/(•\s{3}.*(?:\r\n?|\n)+)(?:\r\n?|\n)(?=\d+\.\s)/g, '$1')

See 这个演示 and 另一个,“反之亦然”,演示.

Here, (?:\r\n?|\n)取代了\*模式并匹配 CRLF、LF 或 CR 行结尾。\s{3}匹配任意三个空格字符。\d+\.\s匹配一位或多位数字,.和一个空格,以及.*匹配除换行符之外的任何零个或多个字符,尽可能多(行模式的其余部分)。前瞻,(?=...),用于确保匹配连续的匹配项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 正则表达式中用 (n-1) 次出现的同一字符替换 (n) 次出现的字符 的相关文章

随机推荐

  • 在 Windows 中找不到命令 php

    我已经在 Windows 7 中安装了 xampp 服务器 我已经检查了浏览器的工作情况 但我正在尝试运行 php v 命令提示符 我收到以下错误消息 php is not recognized as an internal or exte
  • 使用 Laravel 5.8 / Cashier / Stripe 设置订阅时遇到问题

    我按照这个教程一步步操作 https appdividend com 2018 12 05 laravel stripe payment gateway integration tutorial with example 然而 当我去测试它
  • 在文件中查找字符串的最快方法

    我有一个不超过 10KB 的日志文件 文件大小最大可达 2 MB 我想查找文件中是否至少出现一组这些字符串 这些字符串将位于不同的行 例如 行动 输入 结果 我至少需要知道文件中是否存在上述一组 我已经做了大约 100 次测试 每次日志都不
  • PHP 正则表达式在冒号之前转换文本以进行链接

    我需要找到第一次出现的冒号 并获取之前的完整字符串并将其附加到链接中 e g username twitter nice site RT www google com visited 需要转换为 a href http twitter co
  • 用于 Web 开发的 iOS Touch ID

    我目前正在尝试找到一种方法来构建响应式网站 但是一旦网站在 iOS 设备上加载 我想使用新的 iOS Touch ID api 来允许会员登录 我知道当然可以使用 Native 以及 Cordova 来做这样的事情 http cordova
  • 在 pagerAdapter 中的片段之间发送数据

    您好 我正在尝试在两个片段之间发送数据 armarFragment 到 cocinaFragment 但我不知道该怎么做 因为两者都在同一个 Activity tabsActivity 中 该 Activity 实现了 pagerAdapt
  • 位置之前的第一个索引

    我有一个字符串和该字符串中的索引 并且想要获取该索引之前的子字符串的第一个位置 例如 在字符串中 this is a test string that contains other string for testing 是否有一个函数 给定
  • Visual Basic .NET 中的 C 样式指针

    我研究 Visual Basic NET 中的 C 风格指针有一段时间了 我遇到过http support microsoft com kb 199 824 wa wsignin1 0但我不知道这是否正确或如何应用 我已经使用 c 中的程序
  • Angularjs 与 html5Mode 的正常链接

    我正在 html 5 模式下使用 angularjs 它似乎控制了页面上的所有 href 但是 如果我想要链接到应用程序同一域中但实际上不在应用程序中的某些内容 该怎么办 一个例子是 pdf If i do a href pdfurl An
  • 如何使用 Google 地图将地址地理编码为纬度/经度

    我希望能够在谷歌地图上绘制几家公司 并了解我需要对这些公司进行地理编码 我还在地图上的多个标记下方提供了代码 如何对多个公司地址进行地理编码 使用以下地址作为第一个示例 并将其合并到我当前的代码中 我真的需要有人的帮助 因为我无法理解 Go
  • 重构代码以避免反模式

    我有一个 BusinessLayer 项目 其中包含以下代码 域对象是FixedBankAccount 它实现了IBankAccount 存储库被制作为域对象的公共属性 并被制作为接口成员 如何重构它以使存储库不再是接口成员 域对象 Fix
  • 此 C# FluentNHibernate 组件映射的等效 VB.NET 代码是什么?

    我是一名 C 程序员 只能编写 VB NET 代码 在为我当前的客户进一步探索 NHibernate 时 我遇到了 FluentNHibernate 我发现它非常有吸引力 但现在 我想知道如何将组件映射的 C 代码 翻译 为 VB NET
  • c# - 以编程方式将pdf转换为word [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 有谁知道以编程方式将 PD
  • 如何为带有缩略图的纯 CSS/HTML 滑块创建标题,无需 java/jquery

    我正在尝试创建一个滑块 其中包含用于导航的图像缩略图 我还想为每张幻灯片创建一个标题 使其随特定幻灯片一起出现和消失 这就是我现在所拥有的 http jsfiddle net yb02jzbq 源自http thecodeplayer co
  • iOS获取特定的UITableViewCell

    我有一个UIButton在一个习惯中UITableViewCell 单击此按钮会触发事件 myButton addTarget self action selector buttonClicked forControlEvents UICo
  • Python 从类中的另一个函数调用一个函数

    我正在尝试学习 python 但很难理解为什么这个类会抛出错误NameError name self is not defined 我已经关注了如何在类中调用函数 并添加了self 但这没有帮助 这是代码 谁能指出原因 class Back
  • 通过考虑 r (2) 中的分组 Q 矩阵来操作字符向量

    我正在尝试编写基于Group多变的 item map具有项目信息 其中包括显示哪个项目与哪个组关联的 q 矩阵 Group lt c 1 2 3 4 item map lt data frame item id c 21 41 61 72
  • 我想在 php 中 cURL 谷歌搜索结果

    我尝试了以下代码 url http www google co uk q query hl en prmd imvns source lnt tbs ctr countryUK 7CcountryGB cr countryUK 7Ccoun
  • 如何连续改变正弦声音的频率?

    我在用Pygame在窗口中渲染精灵 我想播放正弦声音 其频率取决于y该精灵的位置 我不希望信号相位不连续 实现这一目标的最佳方法是什么 我想出了这个解决方案 改变freq to newfreq然后像这样改变相位 newphase 2 np
  • 如何在 JavaScript 正则表达式中用 (n-1) 次出现的同一字符替换 (n) 次出现的字符

    我的数据是 Hello World I need Hello World 所以基本上 5 次出现的星号被替换为 4 次出现的星号 我怎样才能做到这一点在正则表达式javascript中 注意 星星的数量是动态的 我尝试过此操作 但不确定如何