如何通过正则反向搜索从链接提取wo_no前斜杠间的特定文本?
解决方案:提取URL中指定位置的文本
问题分析
你原正则代码失效的原因是.*属于贪婪匹配,会从字符串第一个/开始匹配,直到倒数第二个/结束,导致结果包含大量冗余内容,无法精准定位目标的GUID段。
方法一:修正正则表达式
方案1:非贪婪匹配
将贪婪匹配的.*替换为非贪婪的.*?,同时用$限定匹配字符串末尾的wo_no,避免误匹配:
import re wo_no = "54789" href = "https://huio.pavilion.co/3/072144b5-f1a0-4dd4-9bb6-d5b7f96b144d/54789" guid_search = re.search(f"/(.*?)/{wo_no}$", href) if guid_search: print(guid_search.group(1)) # 输出:072144b5-f1a0-4dd4-9bb6-d5b7f96b144d
方案2:精准匹配非斜杠字符(推荐)
用[^/]+匹配不含斜杠的字符,直接定位两个斜杠之间的目标段,效率更高:
import re wo_no = "54789" href = "https://huio.pavilion.co/3/072144b5-f1a0-4dd4-9bb6-d5b7f96b144d/54789" guid_search = re.search(f"/([^/]+)/{wo_no}$", href) if guid_search: print(guid_search.group(1)) # 输出:072144b5-f1a0-4dd4-9bb6-d5b7f96b144d
方法二:字符串分割法(无需正则)
如果URL结构固定(wo_no始终在最后一段),直接用split分割后取倒数第二段即可:
wo_no = "54789" href = "https://huio.pavilion.co/3/072144b5-f1a0-4dd4-9bb6-d5b7f96b144d/54789" segments = href.split("/") if segments[-1] == wo_no: print(segments[-2]) # 输出:072144b5-f1a0-4dd4-9bb6-d5b7f96b144d
内容的提问来源于stack exchange,提问作者Ben David
相关产品推荐
相关产品推荐

