You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Positive Lookbehind单条正则提取URL中series后内容并去除横杠

方案解答

第一个问题:是否可以仅通过Positive Lookbehind(正向后视)的单条正则匹配直接过滤-

不行。正则的匹配逻辑是原样捕获原始文本中存在的连续字符,无法在单次匹配过程中自动剔除中间的-字符,因此不可能仅调用一次re.search就直接得到无-的结果,必须搭配额外的字符处理,或者改用替换逻辑实现。

第二个问题:无需lookaround的更优实现方案

推荐使用一次re.sub直接完成所有处理,不需要分两步调用search和sub,代码更简洁,处理效率更高:

import re

test_urls = [
    'https://yanmarshop.com/en-GB/catalog/all/browse/yanmardata-1014416/yanmar-marine-marine-main-engine-small-qm-series-kbw10',
    'https://yanmarshop.com/en-GB/catalog/all/browse/yanmardata-1019044/yanmar-marine-marine-main-engine-small-qm-series-kbw-10a',
    'https://yanmarshop.com/en-GB/catalog/all/browse/yanmardata-1018923/yanmar-marine-marine-main-engine-small-qm-series-kh18-a',
]

for url in test_urls:
    # 正则逻辑:匹配所有从开头到series-的内容、以及所有'-'字符,统一替换为空
    res = re.sub(r'^.*series-|-', '', url)
    print(res)

运行输出完全匹配预期:

kbw10
kbw10a
kh18a

可选:带正向环视的实现

如果必须使用正向环视语法,可以用查找所有非-字符后拼接的方式实现,只是代码简洁度略低于上面的方案:

for url in test_urls:
    suffix = re.search(r'(?<=series-).+', url).group(0)
    res = ''.join(re.findall(r'[^-]', suffix))
    print(res)

内容的提问来源于stack exchange,提问作者user6009994

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:36:04