首页 > 解决方案 > 如何向前瞻、后向正则表达式添加额外的捕获组

问题描述

我正在使用这个正则表达式:(?<=\[).+?(?=\])来匹配下面我的测试字符串中的数据。

这个正则表达式匹配我括号之间的所有内容。我还需要包含我的字符串的 '1234567890ABC...' 部分。我该怎么做?

这是我的测试字符串:

[one] [two] [three] 1234567890ABC...

标签: phpregex

解决方案


您可以使用\G锚点并匹配除方括号外的任何字符,或匹配\w+仅匹配单词字符。

(?:\[|\G(?!^)]\h\[?)\K[^][\s]+
  • (?:非捕获组
    • \[匹配[
    • |或者
    • \G(?!^)在上一场比赛中断言位置
    • ]\h\[?匹配],水平空白字符和可选[
  • )\K关闭组并重置匹配缓冲区
  • [^][\s]+匹配除方括号或空白字符外的任何字符的 1 次以上

正则表达式演示


推荐阅读