javascript正则表达式从字符串末尾到开头搜索

2023-12-24

是否可以使用正则表达式从字符串末尾到开头进行搜索?

例如我有一个字符串:“a2bba2b”

我知道我需要最后一次出现 /a2/ 并且让机器遍历可能很长的整个字符串似乎效率非常低。我知道针将位于字符串(haystack)末尾附近的某个位置,所以我想颠倒顺序,只需告诉脚本从头到尾搜索以节省一些资源。 正则表达式似乎是匹配更复杂字符串的一种方法。而且编写复杂的正则表达式比编写自己的搜索函数更容易。

那么有没有一种方法可能是一个标志或其他东西来反转搜索顺序以从输入字符串的末尾到开头匹配正则表达式。现代语言是否支持类似的东西?如果不是为什么?


不可以,JavaScript RegExp 不允许从字符串末尾开始搜索。通常的解决方法是使用贪婪点匹配模式使引擎抓取整个字符串,然后回溯以找到最后一次出现的位置(如/.*a\d/ https://regex101.com/r/MvuSQl/1),但是如果一个大字符串并不真正包含这个模式,那就会变得很痛苦。

如果目的是extract最后一场比赛,您可能会获得所有比赛并抓住最后一场(s.match(/a\d/g).pop()(当然,必须有一个空检查))。

有一些正则表达式引擎实际上可以让您从右到左解析字符串。

  • .NET 正则表达式使用RegexOptions.RightToLeft修饰语 https://learn.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regexoptions.righttoleft?view=netframework-4.7为此(参见)
  • In Python PyPi 正则表达式 https://pypi.python.org/pypi/regex/,您还可以通过regex.R(或内联(?r)版本)强制反向匹配:regex.compile(r'a\d', regex.R).sub(r"**\g<0>**", "a2bba2b", count=1) ==> a2bb**a2**b) (see RexTester 演示 http://rextester.com/DQGRBE89795).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript正则表达式从字符串末尾到开头搜索 的相关文章

  • RegularExpressionValidator 的 ValidationExpression 内的引号

    使用所述控件来验证 ASP NET TextBox 我很好奇最流行的做法是什么 目前使用 ValidationExpression w d s quot 有更短的方法吗 尝试过 无济于事 谢谢 Using 不起作用 并且您将无法使用 任何一
  • Yeoman-Angular 生成的应用程序中缺少 Angular 脚本

    我已经使用 Yeoman Angular Generator 生成了一个应用程序 但项目中缺少 angular js 和其他 Angular 文件 我可以在 Bower json 文件中看到这些依赖项 如下所示 name mi portfo
  • 如何使用nodeJS SFTP客户端列出所有子目录?

    有趣的节点 JS ssh2 sftp client 我想列出给定路径中的所有目录及其子目录 let sftp new ssh2SftpClient console log sftp sftp connect host xx xxx xxx
  • angularjs 自定义过滤器检查数据数组内的值

    我有两个过滤器 它们根据数据中的队列键过滤数据 这是我的代码 var app angular module app app controller mainController function scope Data object scope
  • Jqplot 中两个系列数据的不同颜色条

    我想知道如何在 Jqplot 中为两个系列制作不同的颜色条 如果我只有一个系列数据 它的工作原理如下图所示 红色和绿色基于其值 但是 如果我有两个系列数据 我无法为每个系列数据配置两个系列颜色 目前我只能做这个图 我希望两个系列图可以根据其
  • Object.assign() - 奇怪的行为需要解释

    我有这个代码 function margeOptions options passedOptions options Object assign options passedOptions let passedOpts a true let
  • 从 Angular 6 服务中绑定图像

    我有一个端点 它根据某些参数为我提供图像 这不是一个图像网址 而是一个普通图像 因此 当我到达邮递员中的端点时 作为响应 我收到一张图像 JPG 我是否可以在变量中接收该图像并将其绑定到 HTML 标签中 所有问题都有将图像 url 映射到
  • 画布图像遮罩/重叠

    在我的项目中 我必须使用画布在另一个相同尺寸和图案图像上实现一个不同的颜色图像 并且图像不是圆形或矩形形状 所有这些都是波浪形状的 它将应用于单个主背景图像 以便在每个主背景图像上显示多个图形onclick功能 重叠的图像应更改为另一种选定
  • Vue js按钮冻结dom

    我试图在按下按钮时切换包含加载动画的跨度 直到使用 v if 函数完成 但是当我按下按钮时 DOM 冻结并且 span 元素保持不变 直到函数调用结束 如何让 DOM 不冻结并显示加载图标 非阻塞按钮按下可能是一个解决方案 HTML
  • 使用 word_number 值对 javascript 数组进行排序

    如何对数组进行排序 var arr new Array word 12 word 59 word 17 这样我得到 word 12 word 17 word 59 Thanks 您需要编写一个排序方法 您可以编写任何您喜欢的方法 该方法在
  • Angular 7 Guard 重定向仅适用于双击

    问题是我已经实现了一个 Guard 旨在处理特定的目录 如果当前用户名的角色等于 2 它应该返回 true 如果没有 那么它不应该重定向 这是我的 app routing module ts 文件 问题出在 userlist 路径中 我们是
  • 如何正确关闭 Node.js Express 服务器?

    我需要在收到回调后关闭服务器 auth github callback网址 与平常一样HTTP API http nodejs org docs latest api http html关闭 服务器目前支持server close call
  • 我应该使用 AWK 或 SED 删除 CSV 文件中引号之间的逗号吗? (重击)

    我有一堆日常打印机登录CSV格式 我正在编写一个脚本来跟踪使用了多少纸张并将信息保存到数据库中 但我遇到了一个小问题 本质上 日志中的一些文档名称中包含逗号 全部用双引号引起来 并且由于它采用逗号分隔格式 所以我的代码搞乱了并将所有内容推到
  • jQuery 面板滑块通过单击按钮打开但不会关闭

    我的页面上有一个按钮 可以使用 jquery 和 Modernizr 框架打开右侧面板 按钮位于屏幕最右侧 单击时 它会向左滑动并打开打开的面板 问题是 再次单击时它不会滑回到原来的位置 HTML div class cd panel fr
  • 如何让无限滚动发挥作用?

    我正在尝试让这个无限加载脚本在我的项目中工作 这是我的 HTML div div div class pagina div div class pagina div div class pagina div div class pagina
  • 如何在javascript中解析 yyyy-MM-dd HH:mm:ss.SSS 格式的日期?

    const time 2016 11 16 00 00 00 000 const date new Date time console info date 似乎 safari 无法解析 yyyy MM dd HH mm ss SSS 格式日
  • 更改 CSS 样式表的选择器属性

    以下是我们传统上如何更改重复元素的样式 将样式应用到每个元素 function changeStyle selector prop val var elems document querySelectorAll selector Array
  • 正则表达式不匹配

    我正在尝试以下代码 d byte x01 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x80J x13 x80SQ x80L xe0 x80 x92 x80L x80H xe0 r regexp Must
  • Notepad++ 正则表达式代码提取行尾

    我有一个需要捕获的源代码 整个文件只有一行 但我无法捕获我需要的数据 allow ok secret 4326dwsaddsafsd286435dsfs754 现在我需要捕获每次都会变化的数据 4326dwsaddsafsd286435ds
  • 相当于 JavaScript 中 Ruby 的each_cons

    许多语言都曾提出过这个问题 但 javascript 却没有 Ruby 有方法Enumerable each cons https devdocs io ruby 2 5 enumerable method i each cons看起来像这

随机推荐