正则表达式匹配去多余空格 提取Address字段后的地址内容
问题原因
原正则的后顾规则(?<=Address(\s))仅匹配Address后的1个空格,后续连续的空格会被后面的.*规则捕获,因此匹配结果携带前置多余空格。
解决方案
方案1:不定长后顾(适配支持不定长后顾的正则引擎,如Python re、.NET、Java 9+)
正则表达式:(?<=Address\s+)\S.*?(?=\s*<\/b>)
规则逻辑:
- 后顾匹配
Address后的全部连续空白,将匹配起始位置直接跳到空白结束处 - 从非空白字符开始匹配内容,到
</b>标签前结束,直接得到无前置空格的地址内容
如果不需要匹配HTML标签边界,可将前瞻规则替换为(?=\s+Branch),匹配到Branch字段前结束即可。
方案2:捕获组方案(全正则引擎兼容)
如果运行环境不支持不定长后顾,使用捕获组提取是兼容性最高的方案,正则表达式:Address\s+([^<]+)<\/b>
执行后取第1个捕获组的内容,即可得到无前置空格的地址123 Mayor Street, LAG。
内容的提问来源于stack exchange,提问作者greg616
相关产品推荐
相关产品推荐

