正则表达式需求:提取单行最后逗号后的无前后空格邮编
提取地址行末尾的邮编(无前后空格)
需求:从单行地址(如示例中的LOCATION行)里提取最后一个逗号之后的邮编,要求结果不包含换行、邮编前后的空格。
示例文本:
UID:20230106T092159-yourdelivery@dpd.co.uk DTSTAMP:20230106T092159 LOCATION:110 My Address, London, SW1A 1AA DESCRIPTION:My Shop URL;VALUE=URI:https://www.www.myshop.com SEQUENCE:0
原正则[^,]*$捕获结果不符合预期,目标是精准获取SW1A 1AA且无前后空格。
修正后的正则方案
通用匹配单行最后一个逗号后的邮编
,\s*([^,\s].*?)\s*$
仅匹配LOCATION开头的行(更精准)
LOCATION:.*,\s*([^,\s].*?)\s*$
正则说明
,\s*:匹配最后一个逗号,以及逗号后所有空白字符(空格、制表符等)([^,\s].*?):捕获核心内容,[^,\s]确保开头非空格/逗号,.*?非贪婪匹配到结尾前的空白\s*$:匹配结尾的所有空白,不纳入捕获组
捕获组1的内容即为无前后空格的目标邮编。
简化写法(适用于逗号后仅单个空格的场景)
如果能确定最后一个逗号后只有单个空格,可使用更简洁的正则:
,\s([^,]+)$
内容的提问来源于stack exchange,提问作者Antony Xenophontos
相关产品推荐
相关产品推荐

