正则表达式:在链接中https?://之后找到所有双斜杠

时间:2018-12-21 14:38:25

标签: regex

我在PostgreSQL中断开了链接,该链接在域后包含双斜杠。例如: http://example1.com//path1/path2https://example2.com/path1//path2

我使用[^(https?://)](\/\/)正则表达式捕获双斜杠,但是此表达式捕获//前的第一个符号。当尝试替换时,我会跟随结果http://example1.co/path1/path2https://example2.com/path/path2,因为表达式在第一个链接中捕获m //,在第二个链接中捕获1 //。 参见https://regex101.com/r/NhCVMz/6

我想将http://或https://之后的所有双斜杠替换为单斜杠。

1 个答案:

答案 0 :(得分:3)

使用negative lookback

s/(?<!http:|https:)\/\//\//g

(或者,可能更容易用|而不是/的正则表达式定界符来查看):

s|(?<!http:|https:)\/\/|\/|g

Demo

某些版本的PCRE或Perl将为您提供Variable length lookbehind not implemented in regex m/(?<!http:|https:)///。对于这些,您可以将回溯设置为固定宽度:

s/(?<!ttp:|tps:)\/\//\//g