我在PostgreSQL中断开了链接,该链接在域后包含双斜杠。例如: http://example1.com//path1/path2,https://example2.com/path1//path2
我使用[^(https?://)](\/\/)
正则表达式捕获双斜杠,但是此表达式捕获//前的第一个符号。当尝试替换时,我会跟随结果http://example1.co/path1/path2和https://example2.com/path/path2,因为表达式在第一个链接中捕获m //,在第二个链接中捕获1 //。
参见https://regex101.com/r/NhCVMz/6
我想将http://或https://之后的所有双斜杠替换为单斜杠。
答案 0 :(得分:3)
s/(?<!http:|https:)\/\//\//g
(或者,可能更容易用|
而不是/
的正则表达式定界符来查看):
s|(?<!http:|https:)\/\/|\/|g
某些版本的PCRE或Perl将为您提供Variable length lookbehind not implemented in regex m/(?<!http:|https:)///
。对于这些,您可以将回溯设置为固定宽度:
s/(?<!ttp:|tps:)\/\//\//g