用于重叠固定宽度匹配的正则表达式

2023-12-27

所以说我有一个字符串:

'aaggbb'

我想找到 aXXXb 类型的所有组,其中 X 是任何字符。 我认为正则表达式:

/(a(?:...)b)/ig

可以解决这个问题,但它只得到第一个:

'aaggbb'

并错过了第二个:

'aaggbb'

我如何同时获得两者?

我四处寻找了一段时间试图弄清楚这一点,所以我希望我没有错过一些非常明显的东西。谢谢!


如果您正在寻找固定长度的子字符串,那么您需要使用限制量词来指定它{3}(精确匹配 3 个符号)并在前瞻中使用捕获来匹配所有子字符串:

(?=(a.{3}b))

See demo https://regex101.com/r/yB8rW4/1

前瞻不消耗字符,并且将启用重叠匹配。 “消费”的意思是在前向或后向的右括号之后,正则表达式引擎停留在字符串中开始查找的同一位置:它没有移动。从该位置开始,引擎可以再次开始匹配字符。 (from reexegg.com http://www.rexegg.com/regex-disambiguation.html)

var re = /(?=(a.{3}b))/g; 
var str = 'aaggbb';

while ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    document.getElementById("demo").innerHTML += m[1] + "<br/>";
}
<div id="demo" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于重叠固定宽度匹配的正则表达式 的相关文章

  • REGEXP_REPLACE - 仅当包含在 () 中时才从字符串中删除逗号

    我在 oracle 论坛网站找到了一个例子 输入字符串 a b c x y z a xx yy zz x WITH t AS SELECT a b c x y z a xx yy zz x col1 FROM dual SELECT t c
  • RegularExpressionValidator.ValidationExpression 强制长度为 10 或 12 个符号

    RegularExpressionValidator ValidationExpression d 10 仅表示数字 最多 10 位 RegularExpressionValidator ValidationExpression d 10
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • Grep 和 Python

    我需要一种通过 Unix 命令行中的正则表达式使用 grep 搜索文件的方法 例如 当我在命令行中输入 python pythonfile py RE file to be searched 我需要正则表达式 RE 在文件中搜索并打印出匹配
  • Perl:HTTP::微小删除留下损坏的锚标记

    我编写了一个脚本 该脚本收集从数据库读取的缓冲区内的所有 URL 检查该页面是否仍然存在 并使用 HTTP Tiny 从缓冲区中删除 URL 如果该 URL 无法访问或返回无效 问题是 HTTP Tiny 删除左锚标记 例如此处无效的文本
  • grep 两个分隔符之间的子字符串

    我有很多bash使用的脚本perl内的表达式grep为了提取两个分隔符之间的子字符串 例子 echo BeginMiddleEnd grep oP lt Begin End 问题是 当我将这些脚本移植到运行的平台时busybox 融合的 g
  • 正则表达式:无法找出与单个事件匹配的表达式,并且仅匹配包含特定单词的行

    我正在尝试使用 Sublime Text 作为编辑器清理并合并一些旧的日历文件 x ics 打开文件会得到一个长文件 如下所示 我想删除 即替换为任何内容 文件中在摘要中提及生日的所有条目 VEVENT 并保留所有其他条目 因此我使用正则表
  • Python 非贪婪正则表达式

    我如何制作一个像这样的Python正则表达式 这样 给定 a b c d e 蟒蛇匹配 b 代替 b c d 我知道我可以使用 代替 但我正在寻找一种更通用的解决方案 使我的正则表达式更加干净 有没有办法告诉python 嘿 尽快匹配这个
  • 正则表达式最多匹配五个单词

    我有一个正则表达式 a zA Z 0 9 1 5 它验证该单词包含字母数字字符和少数特殊字符 并且长度不应超过5人物 如何使此正则表达式接受最多五个与上述正则表达式匹配的单词 a zA Z 0 9 1 5 s a zA Z 0 9 1 5
  • Word通配符搜索的正则表达式查找包含至少3个连续数字的括号

    在以下示例中 airspeed AS user 104A 104B device 101 vehicles 105A C 搜索应该找到 104A 104B 101 and 105A C 但不是 AS 我尝试使用 0 9 0 9 0 9 但这
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 正则表达式的 o 修饰符是什么意思?

    Ruby 正则表达式有一些选项 例如i x m o i例如 意味着忽略大小写 什么是o选项是什么意思 在ri Regexp 它说o意味着执行 仅插值一次 但是当我这样做时 a one b a a two b不改变 它保持 one 我缺少什么
  • PHP 正则表达式匹配字符串的最后一次出现

    我的字符串是 text1 A373R12345 我想找到该字符串最后出现的非数字数字 所以我使用这个正则表达式 0 9 然后我得到这个结果 1 A373 2 12345 但我的预期结果是 1 A373R 它有 R 2 12345 另一个例子
  • 正则表达式,如果模式在引号中则忽略模式

    编写一个非常简单的脚本解析器作为学校项目的一部分 虽然这不是必需的 但我很好奇是否可以仅使用正则表达式来完成 语法类似于 ASP 其中脚本以 结尾 它只支持一个命令 pr 与echo或Response Write相同 现在我正在使用这个正则
  • 如何在 CakePHP 中“验证”人名?

    我有一个 PHP 脚本 应该检查 有效 的人名 但最近破解了带有空格的名称 因此我们向验证器添加了空格 除了这样做之外 有没有办法向 CakePHP 的验证器添加黑名单以阻止所有 无效 字符 而不是允许 有效 字符 注意 我 通常 知道如何
  • Powershell 将单个字符串与多个正则表达式匹配?

    除了依次迭代每个正则表达式之外 是否有一种更 powershelly 的方式将单个字符串与正则表达式的数组 集合进行匹配 我真正想做的是这样的 database Name match includeRegexArray 考虑到 Powers
  • JavaScript 中的实时摩尔斯电码转换器

    在看到谷歌关于莫尔斯电码 gmail 的愚人节笑话后 我想我应该尝试用 javascript 创建一个实时莫尔斯电码转换器 我正在使用正则表达式和替换将莫尔斯电码更改为字符 例如 replace g a replace g r 我遇到的问题
  • 正则表达式库基准

    我最近一直想知道正则表达式实现的性能 并且很难想出很多有用的信息 它很容易对浏览器 javascript 正则表达式性能进行基准测试 网上有很多工具 Chrome 和 Opera 中的 javascript 正则表达式实现几乎摧毁了所有其他
  • 正则表达式 数字字符串 数字字符串循环

    我的字符串是 str Move 10 Casio Watch 20 Apple Iphone 100 Apple Macbook to store 我用过了 preg match all 0 9 str matches 但它只匹配产品名称的
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可

随机推荐