重复捕获组PCRE

2023-12-11

无法理解为什么这个正则表达式(regex101)

/[\|]?([a-z0-9A-Z]+)(?:[\(]?[,][\)]?)?[\|]?/g

捕获所有输入,而这个(regex101)

/[\|]+([a-z0-9A-Z]+)(?:[\(]?[,][\)]?)?[\|]?/g

仅捕获|Func

输入字符串是|Func(param1, param2, param32, param54, param293, par13am, param)|

另外我如何以正常方式匹配重复的捕获组?例如。我有正则表达式

/\(\(\s*([a-z\_]+){1}(?:\s+\,\s+(\d+)*)*\s*\)\)/gui

输入字符串是(( string , 1 , 2 )).

Regex101 表示“重复的捕获组只会捕获最后一次迭代。在重复的组周围放置一个捕获组以捕获所有迭代......”。我尝试遵循这个提示,但它对我没有帮助。


Your /[\|]+([a-z0-9A-Z]+)(?:[\(]?[,][\)]?)?[\|]?/g正则表达式不匹配,因为您没有定义模式来匹配括号内的单词。你可以将其修复为\|+([a-z0-9A-Z]+)(?:\(?(\w+(?:\s*,\s*\w+)*)\)?)?\|?,但括号内的所有值都将匹配到一个组中,您稍后必须将其拆分。

使用 PCRE 正则表达式不可能获得任意数量的捕获,因为在重复捕获的情况下,只有最后捕获的值存储在组缓冲区中。

你可以做的是获得多个匹配preg_match_all捕获初始分隔符。

因此,要匹配第二个字符串,您可以使用

(?:\G(?!\A)\s*,\s*|\|+([a-z0-9A-Z]+)\()\K\w+

See 正则表达式演示.

Details:

  • (?:\G(?!\A)\s*,\s*|\|+([a-z0-9A-Z]+)\()- 上一场比赛结束时(\G(?!\A)) 和一个用 0+ 空格括起来的逗号 (\s*,\s*), 或 1+|符号(\|+),后跟 1 个以上字母数字字符(捕获到第 1 组,([a-z0-9A-Z]+)) and a (象征 (\()
  • \K- 省略目前匹配的文本
  • \w+- 1+ 个单词字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重复捕获组PCRE 的相关文章

  • 正则表达式接受 4 条规则中的 3 条

    我似乎无法让正则表达式正确满足以下要求 长度在 8 到 20 之间的字符串 必须包含至少 1 个大写字母字符 至少 1 个小写字母字符 以及至少 1 个数字或至少 1 个特殊字符字符 或两者 假设特殊字符仅限于包括 我最初是这样写的 A Z
  • 使用先前的反向引用作为命名捕获组的名称

    有没有办法使用对先前捕获组的反向引用作为捕获组的名称命名捕获组 这可能不可能 如果不可能 那么这就是一个有效的答案 下列 data description some description preg match data matches p
  • 如何使用 XPath 正则表达式匹配 URL

    需要 XPath 方面的帮助 我有这样一个XML
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 如何仅删除单括号并保留配对的括号

    你好 我亲爱的老师 R 用户朋友们 我最近开始认真学习正则表达式 最近我遇到了一种情况 我们只想保留配对括号 并省略未配对的 这是我的样本数据 structure list t1 c Book Pg 1 Website Online Jou
  • 解析西班牙姓氏

    西班牙姓氏由三部分组成 父亲的名字 可选的母亲姓名 可选配偶的父亲姓名 这三个部分中的每一部分都是一个单词 前面可能带有 De Del De La De Los 或 De Las 这些前缀中的每一个都以大写字母开头 并且每个部分可能只有一个
  • 正则表达式:删除 xml 的空元素标签

    我想将所有自封闭元素替换为长语法 因为我的网络浏览器在它们上绊倒 Example becomes 我正在使用 python 风格的正则表达式 这些解决方案都不会容纳像 foo gt 这样的属性 尝试 s lt w gt s gt lt 1
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • Pandas系列矢量化文本处理

    我想使用矢量化操作改进我的 Pandas 代码 假设我有一个简单的 DataFrame 其中有一个文本列 其中可能包含 url Column1 0 hello http www google com 1 bye www mail com w
  • 如何检查php字符串是否只包含英文字母和数字?

    在 JS 中我使用了这段代码 if string match A Za z0 9 但我不知道如何在 PHP 中做到这一点 Use 预匹配 http php net manual en function preg match php if p
  • Python 正则表达式中的 \B+ 与 [\B]+ 与 [^\b]+

    我在回答 SO 问题时遇到了一个我不明白的问题 我创建了一个简化的示例来说明该问题 场景 我正在测试两个标记 不是随机的英语单词 在字符串中至少相距一定距离 在这个例子中 我们有一个动物列表 我们要确保在羊和狼之间至少还有其他三种动物 否则
  • Bash:单行命令以与 grep 命令相反的状态退出?

    如何减少以下 bash 脚本 grep P STATUS Perfect recess txt exit 1 exit 0 看起来我应该能够用一个命令来完成它 但我这里总共有 3 个命令 我的程序应该 阅读课间休息 txt 如果它包含 ST
  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 如何使用正则表达式验证带有可选百分比符号的小数?

    正如问题的标题 我需要使用以下值验证正则表达式 最多 2 个小数位和 9 个整数 带有可选的百分比符号 Valid 10 0 1111111 12 15 2 10 2 3 Invalid 12 02 123456789123 123 I t
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 与有效正则表达式匹配的正则表达式

    是否存在与有效正则表达式匹配的正则表达式 我知道正则表达式有多种风格 其中一种就可以了 是否存在与有效正则表达式匹配的正则表达式 根据定义 它非常简单 No 所有正则表达式的语言是no regular语言 只需查看嵌套括号 因此不可能有re
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace

随机推荐