如何用正则捕获重复信息?仅获最后一组内容求助
正则捕获所有重复属性组的解决方案
问题根源
你写的正则开头用了.* ,这是贪婪匹配模式,会直接吃掉字符串里前面所有内容,只给最后一组属性留下匹配空间。而且没开启全局匹配,自然只能抓到最后一组。
修正后的正则表达式
(\w+) \(Vendeur : '([^']+)' / Amazon : '([^']+)'
加上全局匹配修饰符g(不同工具里可能是勾选「全局匹配」选项,或者在正则末尾加g)。
正则各部分说明
(\w+):捕获属性名称(比如product_type、ean),\w+匹配字母、数字和下划线,刚好符合属性名格式\(Vendeur : ':匹配固定前缀,括号需要转义\(避免被当作正则分组([^']+):捕获卖家的属性值,用[^']+匹配所有非单引号的字符,比你之前用的.*?更高效,不会产生不必要的回溯' / Amazon : ':匹配中间的固定分隔文本([^']+):捕获亚马逊的属性值,逻辑和上面一致
捕获结果
开启全局匹配后,就能得到三组匹配结果,整理成你想要的格式就是:
product_type : APPLIANCE_ACCESSORY : CLEANING_AGENT ean : 400650819XXXX: 400650819XXXX item_package_quantity : 5 : 10
内容的提问来源于stack exchange,提问作者Maxime DANJOU
相关产品推荐
相关产品推荐

