我想解析一个许可证文件,其中包含这样的内容。
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/