首页 > 解决方案 > 正则表达式根据多个条件替换不同的值

问题描述

我正在尝试找到一个可以在 Notepad++ (Windows) 中使用的 REGEX 表达式(或多个),它将根据划分 URL 的特定符号来更改 URL 的不同部分。

基本上我在一个大文件中有这种类型的 URL,它们分散在周围:

domain.com/folder/random-text-1?REPLACE-THIS-1=REPLACE-THIS-2=REPLACE-THIS-3&REPLACE-THIS-4

REPLACE-THIS-1/-2/-3/-4 总是彼此不同,即使在不同的 URL 之间也是如此,如下所示:

domain.com/folder/random-text-2?A1=A2=A3&A4
domain.com/folder/random-text-2?B1=B2=B3&B4
etc

(注意:“文件夹”始终保持不变)

这就是我试图用 REGEX 表达式做的事情:

注意:REPLACED-1/REPLACED-2/REPLACED-3/REPLACED-4 始终相同,它们不会改变

我面临的最大问题是所有这些 replace-1/-2-/3/-4 彼此不同(我的意思是所有 URL 都有不同的值),所以如果我可以使用正则表达式会很棒/多个正则表达式替换!

太感谢了!

标签: regexregex-negationregex-groupregex-greedyregexp-replace

解决方案


这个正则表达式应该做你想做的。它查找包含/folder/后跟一些随机文本的 URL,a?然后是形式a=b=c&dwhere a, b, candd可能包含任何非空白字符(除了=forab, 和&for c)。

(\/folder\/[^?]+\?)[^=\s]+=[^=\s]+=[^&\s]+&.*(?=\s|$)

这被替换为

\1REPLACE-1=REPLACE-2=REPLACE-3&REPLACE-4

正则表达式 101 上的演示


推荐阅读