如何编写正则表达式匹配提取两种格式的配置文件版本号?
提取配置文件中标签内的版本号(兼容两种格式)
直接用这一条awk命令就能同时匹配你要的两种版本格式,不用分开执行两次:
awk 'match($0, /<version>([0-9]+\.[0-9]+(\.[0-9]+)?)<\/version>/, arr) {print arr[1]}' config.xml
正则逻辑说明
- 用
<version>和</version>精准定位标签范围,避免误匹配其他无关的数字串 - 核心捕获组
([0-9]+\.[0-9]+(\.[0-9]+)?):[0-9]+:匹配1位或多位数字(对应主版本号,比如例子里的2)\.:转义后的点号,匹配版本号里的分隔符[0-9]+:匹配1位或多位数字(对应次版本号,比如例子里的343)(\.[0-9]+)?:带问号的可选组,匹配.[数字]格式的修订版本号,问号表示这部分可以有也可以没有,完美兼容两种格式
如果要严格匹配你给出的格式(主版本1位、次版本3位、修订版本1位可选)
可以用更精准的正则:
awk 'match($0, /<version>([0-9]\.[0-9]{3}(\.[0-9])?)<\/version>/, arr) {print arr[1]}' config.xml
这里把主版本限定为1位数字,次版本限定为3位,修订版本限定为1位,完全贴合你给出的示例格式。
内容的提问来源于stack exchange,提问作者Bert
相关产品推荐
相关产品推荐

