我有一个包含键值对列表的字符串,如下所示:“a:1,b:2,c:3”。我想为指定的键提取一个值,例如,我会为“a”获得“1”。我打算用这样的正则表达式来做:
'(?<=(^|,)$KEY:)^,*'
但似乎 grep 不支持环视。(我什至不确定这个正则表达式是否正常工作。)还有其他方法吗?
您可以使用
grep -oP "(?:^|,)$KEY:\K[^,]+"
该-o
选项输出匹配。-P
启用 PCRE 引擎。双引号是字符串插值所必需的,以便$KEY
可以进行插值。
模式匹配:
(?:^|,)
- 字符串或逗号的开头$KEY
-KEY
变量:
- 冒号\K
- 匹配重置运算符,丢弃到目前为止匹配的整个文本[^,]+
- 1+ 个字符,除了 ,
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句