如何从 URL 中提取酒店名称:正则表达式解析

假设我们有一个 URL:

'a='https://www.booking.cn/hotel/cn/holidayinnxindu-chengdu.zh-cn.html?aid=1662037&ucfs=1&arphpl=1&dest_id=-1900349&dest_type=city&group_adults=2&req_adults=2&no_rooms=1&group_children=0&req_children=0&hpos=3&hapos=3&sr_order=popularity&nflt=class%3D4&srpvid=ca19373985640093&srepoch=1685173876&map_fdco=1&from=searchresults#hotelTmpl'

我们的目标是使用正则表达式提取其中的酒店名称 'holidayinnxindu-chengdu'。

错误的正则表达式:

re.findall(".*?cn/(.*?).zh.*?",a)

这个正则表达式的含义是从字符串开头开始匹配任意字符(.?),匹配到 'cn/' 后面的任意字符(.),然后再匹配到 '.zh' 之前的任意字符(.*?),并将匹配结果返回。

但是这个表达式没有匹配到最后面的 'hotelTmpl',因此不能正确提取出想要的字符串。

正确的正则表达式:

re.findall("cn/([^.]*).zh",a)

其中:

  • 'cn/':匹配字符串 'cn/'。
  • '([^.]*)':匹配 'cn/' 后面到 '.' 之间的任意字符,并将其作为捕获组返回。
  • '.zh':匹配字符串 '.zh'。

通过这个正则表达式,我们可以成功提取出酒店名称 'holidayinnxindu-chengdu'。

小结:

在使用正则表达式提取字符串时,需要仔细分析目标字符串的结构,选择合适的匹配模式,避免出现错误匹配。尤其要注意特殊字符的匹配方式,需要使用转义符来进行匹配。

如何从 URL 中提取酒店名称:正则表达式解析

原文地址: https://www.cveoy.top/t/topic/oiYe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录