正则表达式仅匹配最后一个匹配项,如何修改以匹配全部目标内容
修正正则表达式以匹配所有目标内容
原正则.*;\/wp-content\/uploads\/(.*)\.存在两个核心问题:
- 开头的
.*是贪婪匹配,会从字符串起始位置一直匹配到最后一个;/wp-content/uploads/,导致仅捕获最后一组符合条件的内容 - 未启用全局匹配模式,无法遍历整个字符串找到所有匹配项
修正后的正则表达式
开启全局匹配模式(不同语言/工具中启用方式不同,比如JS中加g标志),使用非贪婪匹配来捕获每一段目标内容:
;/wp-content/uploads/(.*?)\.jpg
正则说明
;/wp-content/uploads/:精确匹配目标前缀(.*?):非贪婪捕获组,匹配任意字符直到遇到第一个.jpg,避免跳过中间的匹配项\.jpg:精确匹配目标后缀,确保捕获范围截止到.jpg前的内容- 全局匹配模式(如
g标志):让正则遍历整个字符串,返回所有符合条件的捕获结果
匹配结果示例
针对你提供的字符串,将捕获以下内容(含path和thumbnail中的所有目标路径):
auto-shows/frankfurt/2017/2019-porsche-cayenne/02-2019-porsche-cayenne-turbo-NPauto-shows/frankfurt/2017/2019-porsche-cayenne/02-2019-porsche-cayenne-turbo-NPmake/porsche/cayenne/2019/oem/21-2019-porsche-cayennemake/porsche/cayenne/2019/oem/21-2019-porsche-cayennemake/porsche/cayenne/2019/oem/23-2019-porsche-cayennemake/porsche/cayenne/2019/oem/23-2019-porsche-cayennemake/porsche/cayenne/2019/oem/30-2019-porsche-cayennemake/porsche/cayenne/2019/oem/30-2019-porsche-cayenne
可选优化(仅匹配path属性中的路径)
如果只需要捕获path字段下的内容,可调整正则为:
"path":";/wp-content/uploads/(.*?)\.jpg"
内容的提问来源于stack exchange,提问作者Shreyas Ikhar
相关产品推荐
相关产品推荐

