如何调整正则表达式,仅提取IP地址后逗号间的目标内容?
解决grep提取IP后目标内容的正则调整方案
你的核心需求是仅提取IP地址后、下一个逗号前的内容(包括带空格的词组),原来的正则问题在于匹配了IP本身,且\w+无法覆盖带空格的内容。可以通过以下调整实现:
调整后的正则与命令
使用带Perl兼容正则的grep命令,执行:
grep -Po '(?<=,\d+\.\d+\.\d+\.\d+,)[^,]+(?=,)'
正则解释
(?<=,\d+\.\d+\.\d+\.\d+,):后行断言,确保当前位置前是「逗号+合法IP+逗号」的结构,这部分不会被输出[^,]+:匹配任意非逗号的字符(支持空格、字母、数字等),直到遇到下一个逗号,正好覆盖你需要的目标内容(?=,):先行断言,确保当前位置后是一个逗号,保证提取的内容截止到下一个逗号前
测试示例
对于输入文本行:
ID: '560'",,10.117.219.156,Browser,fa7a0434-8f0a-47f2-a3ea-3864d652a042,NAME:
执行命令后会返回:Browser
对于包含空格的输入:
foo,192.168.0.1,PyCharm IDE,bar,Calculator HP,baz
执行命令后会返回两行结果:
PyCharm IDE Calculator HP
内容的提问来源于stack exchange,提问作者M. Khan
相关产品推荐
相关产品推荐

