regex - 使用正则表达式解析许可证文件

标签 regex perl pcre

我想解析一个许可证文件,其中包含这样的内容。

COMPONENTS="A0000 B0000 G0000"

文件中必须有引号来标记包中组件的开始和结束。我已经在 regex101.com 上测试了组合但这并不能解决问题

正则表达式 ("?(?<components>\w+)*\s?"?)适用于字符串“A0000 B0000 G0000”并返回我需要的组件的各个值:A0000、B0000等

但是当我测试(COMPONENTS|PACKAGES)=("?(?<components>\w+)\s?"?)时,该 block 无法返回这些值,仅返回第一个值,即 A0000。

我需要帮助来提取所有这些个人值(value)观。请帮忙。

最佳答案

由于我的解决方案对您有用,因此我发布了答案:

(?:\G(?!^)\s+|(?:COMPONENTS|PACKAGES)=")\K[^\s"]+

模式匹配:

  • (?:\G(?!^)\s+|(?:COMPONENTS|PACKAGES)=") - 两种选择之一:
  • \G(?!^)\s+ - 上一个匹配的结尾(\G 匹配行/字符串的开头或上一个匹配的结尾匹配,因此 (?!^)“减去”字符串位置的开头)和 1+ 空格
  • | - 或
  • (?:COMPONENTS|PACKAGES)= - COMPONENTS=PACKAGES=
  • \K - 匹配重置运算符(丢弃当前匹配的文本)
  • [^\s"]+ - 1 个或多个除空格和双引号之外的字符。

关于regex - 使用正则表达式解析许可证文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50393635/

相关文章:

regex - 替换包含问号的字符串

正则表达式 : If-Clause for capturing group possible?

c - 在 Windows 上的 C 程序中使用 PCRE

ruby - 如何将 Ruby 正则表达式转换为 PCRE

regex - sed 匹配 wordpress url 中的日期

Python:正则表达式:使用一个正则表达式检测连字符的名称和非连字符的名称

php - 使用 Apache 在 PHP 上创建一个带有 2 个参数的友好 URL

Python RegEx 嵌套搜索和替换

regex - 如何在数组上使用正则表达式?

perl - 如何在 Perl 哈希表中存储多个值?