我已经陷入了构建正则表达式的困境,并且想知道你们是否可以帮助我。
这里是完整的字符串:
/20271/Avtal%202013/Sammanst%c3%a4lld_produktlista_2013_v121220_l%c3%a5st_web.xls
我想提取 2013_v121220 ,但匹配必须遵循以下几条规则:
我已尝试使用(\d+[_v]*\d+).*?_web(\.xlsx?)$
,但我不知道如何在此处实施长度检查,即(\d+[_v]*\d+)
必须至少包含4个字符,{4,}
,这是与_l%c3%a5st_web.xls
中的 5 不匹配。
我已经提出了这个正则表达式:(\d[\d_v]{2,}\d).*?_web(\.xlsx?)$
但它只匹配第一次出现,我需要最后一个,最接近结束。我已尝试将.+
添加到正则表达式前缀,但无论如何都会失败。
答案 0 :(得分:0)
(?<=produktlista_)(\d{1,}(?:_v)\d{1,}|\d{4,})
这将为您提供productlista的价值
编辑anubhavas正则表达式
\d{1,}(?:_v)?\d{1,}(?=.*?_web\.xlsx?$)
答案 1 :(得分:0)
答案 2 :(得分:0)
我自己设法解决了这个问题。谢谢你的努力,我真的很感激你的 帮助
这个正则表达式完全符合我的规则:
(\d[\d_v]{2,}\d)(?!.*\d[\d_v]{2,}\d).*?_web(\.xlsx?)$