负面看待或条件?

时间:2018-02-19 03:30:13

标签: python regex

我正在努力使or条件或0或1匹配以负面看后面但它会抛出错误,如look-behind requires fixed-width pattern

#method1
url = re.sub(r'(?<!(?:https:|http:))//','/',url)

#method2
url = re.sub(r'(?<!https?:)//','/',url)

如何使用正则表达式解决此问题?

示例输入

https://somedomain.com//having//extra//slash

输出

https://somedomain.com/having/extra/slash

我目前正在做以下事情,但我不确定所有情况

 url = re.sub(r'(?<!:)//','/',url)

1 个答案:

答案 0 :(得分:4)

试试这个正则表达式:

(?<!https:)(?<!http:)//

<强> Click for Demo

<强>解释

  • (?<!https:) - 负面观察以确保当前位置不在https:之前
  • (?<!http:) - 负面观察以确保当前位置不在http:之前
  • // - 一旦满足上述两个条件,就匹配双正斜杠//

将所有此类//替换为/