Regex 故障排查:如何从给定数据集中单独提取出peter的内容?
问题原因
你当前使用的正则ID:\s(.*?)\s要求匹配到的ID值后必须跟随1个空白字符,但样本中peter处于行尾,后面没有空白字符,因此无法匹配。
解决方案
场景1:提取所有ID值(同时匹配john、peter)
两种可选写法:
- 通用兼容写法:
ID:\s(.*?)(?:\s|$)
用非捕获组兼容「值后是空格」和「值后是行尾」两种场景,开启全局匹配模式后,捕获组1会依次返回john、peter两个结果。 - 精准高效写法(仅适用于ID由英文字母、数字、下划线组成的场景):
ID:\s(\w+)
无需额外判断尾部边界,匹配效率更高。
场景2:仅单独提取peter的值
直接通过行尾锚定精准匹配,正则修改为:ID:\s(peter)$
捕获组1直接返回peter。
内容的提问来源于stack exchange,提问作者Faiz
相关产品推荐
相关产品推荐

