首页 > 解决方案 > 在python3中的url字符串上匹配部分字符串

问题描述

我正在尝试使用正则表达式方法在 python 中匹配或查找巧合的字符串,re.search()但没有幸运

这是我的代码:

import re

request_path = '/colpos/papanicolaou2/124579/1254'
urls = ['/colpos/prescription', '/colpos/transfer', '/colpos/papanicolaou2', '/colpos/biopsia']

for url in urls:
    c_url = re.compile(url)
    result = re.search(c_url, request_path)
    if isinstance(result, re.Match):
        allowed_url = url
        break

print(allowed_url) # must be /colpos/papanicolau2

我想要发生什么?,如果 url 在 request_path 中(在这种情况下是部分),我希望结果是 re.Match 对象实例而不是 None。

我怎样才能做到这一点?,有没有更好的方法来知道我的 request_path 是否在 url 中?

上面提到的代码只有在 url 和 request_path 包含完全相同的情况下才有效,我不希望这样。我应该如何re.search()在 python 中使用来实现这一点?

谢谢你

标签: pythonregex

解决方案


我尝试使用“in”关键字而不是使用 re 模块来检查它。我认为它更简单,更具可读性。

request_path = '/colpos/papanicolaou2/124579/1254'
urls = ['/colpos/prescription', '/colpos/transfer', '/colpos/papanicolaou2', '/colpos/biopsia']
allowed_urls = []

for url in urls:
    if url in request_path:
        allowed_urls.append(url)

print(allowed_urls) # this contains '/colpos/papanicolaou2' like you wanted

推荐阅读