求助编写Regex:匹配日志中ID_number:开头、.003结尾的内容
解决方案:匹配指定格式的ID_number内容
正确正则表达式
根据你的需求,直接用这个正则就能匹配目标内容:
ID_number: .*\.003
如果需要精确提取可变部分(比如示例里的111.2),可以用捕获组:
ID_number: (.*)\.003
如果日志里的内容跨多行,把.*换成[\s\S]*?(非贪婪匹配,避免连匹配多个目标):
ID_number: [\s\S]*?\.003
正则各部分解释
ID_number::精准匹配开头的固定字符串,注意后面的空格不能丢.*:匹配任意数量的任意字符(默认不包含换行),对应你说的可变部分\.003:\.是转义后的点号(正则里.默认匹配任意字符,必须转义才能匹配实际的.),后面精准匹配003结尾[\s\S]*?:\s匹配空白符(包括换行),\S匹配非空白符,合起来就是匹配所有字符;*?是非贪婪模式,防止一次性匹配到多个.003结尾的内容
之前匹配失败的常见原因
- 没转义点号:比如写成
ID_number: .*.003,最后一个.会匹配任意字符,而不是实际的.,导致无法精准匹配.003结尾 - 错误使用行首行尾锚点:比如加了
^和$(^ID_number: .*\.003$),但目标内容不是单独一行(比如示例里在<p>标签内),锚点会限制匹配范围导致失败 - 没考虑多行情况:如果可变部分包含换行,
.*无法匹配换行符,需要换成[\s\S]*类的写法
内容的提问来源于stack exchange,提问作者KatarinaS
相关产品推荐
相关产品推荐

