用于根据多个条件替换不同值的正则表达式
Regex expression to replace different values based on multiple criterias
我正在尝试找到一个可以在 Notepad++ (Windows) 中使用的 REGEX 表达式(或多个),它会根据分隔它们的特定符号更改 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
(注意:"folder"始终保持不变)
这就是我试图用 REGEX 表达式做的事情:
- "REPLACE-THIS-1" 与 "REPLACED-1"
注意:所以基本上当它找到第一个“?”时它将用特定的 "REPLACED-1" 替换它之后的 "REPLACE-THIS-1" 直到它到达“=”符号
- "REPLACE-THIS-2" 与 "REPLACED-2"
注意:这是在找到的第一个“=”和找到的第二个“=”之间
- "REPLACE-THIS-3" 与 "REPLACED-3"
注意:这是找到第二个“=”后的文字
- "REPLACE-THIS-4" 与 "REPLACED-4"
注意:问题是 "REPLACE-THIS-4" 有时也包含“=”符号,但我想替换 "REPLACE-THIS-3&"
之后的所有文本
注意:REPLACED-1/REPLACED-2/REPLACED-3/REPLACED-4始终不变,不会改变
我面临的最大问题是所有这些 replace-1/-2-/3/-4 彼此不同(我的意思是所有 URL 都有不同的值),所以如果我可以使用 regex/multiple 要替换的正则表达式!
非常感谢!
这个正则表达式应该做你想做的。它会查找 URL,其中包含 /folder/
,后跟一些随机文本,?
,然后是 a=b=c&d
形式的内容,其中 a
、b
、c
和 d
可以包含任何非空白字符(a
和 b
的 =
以及 [= 的 &
除外17=]).
(\/folder\/[^?]+\?)[^=\s]+=[^=\s]+=[^&\s]+&.*(?=\s|$)
替换为
REPLACE-1=REPLACE-2=REPLACE-3&REPLACE-4
这个表达式,
^(.*\/folder\/[A-Za-z0-9-]*\?)\D+\d+=\D+\d+=\D+\d+&\D+\d+$
替换为
REPLACED-1=REPLACED-2=REPLACED-3&REPLACED-4
也可能有效。
如果您希望 simplify/modify/explore 表达式,regex101.com. If you'd like, you can also watch in this link 的右上面板已对其进行说明,它将如何匹配一些样本输入。
我正在尝试找到一个可以在 Notepad++ (Windows) 中使用的 REGEX 表达式(或多个),它会根据分隔它们的特定符号更改 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
(注意:"folder"始终保持不变)
这就是我试图用 REGEX 表达式做的事情:
- "REPLACE-THIS-1" 与 "REPLACED-1" 注意:所以基本上当它找到第一个“?”时它将用特定的 "REPLACED-1" 替换它之后的 "REPLACE-THIS-1" 直到它到达“=”符号
- "REPLACE-THIS-2" 与 "REPLACED-2" 注意:这是在找到的第一个“=”和找到的第二个“=”之间
- "REPLACE-THIS-3" 与 "REPLACED-3" 注意:这是找到第二个“=”后的文字
- "REPLACE-THIS-4" 与 "REPLACED-4" 注意:问题是 "REPLACE-THIS-4" 有时也包含“=”符号,但我想替换 "REPLACE-THIS-3&" 之后的所有文本
注意:REPLACED-1/REPLACED-2/REPLACED-3/REPLACED-4始终不变,不会改变
我面临的最大问题是所有这些 replace-1/-2-/3/-4 彼此不同(我的意思是所有 URL 都有不同的值),所以如果我可以使用 regex/multiple 要替换的正则表达式!
非常感谢!
这个正则表达式应该做你想做的。它会查找 URL,其中包含 /folder/
,后跟一些随机文本,?
,然后是 a=b=c&d
形式的内容,其中 a
、b
、c
和 d
可以包含任何非空白字符(a
和 b
的 =
以及 [= 的 &
除外17=]).
(\/folder\/[^?]+\?)[^=\s]+=[^=\s]+=[^&\s]+&.*(?=\s|$)
替换为
REPLACE-1=REPLACE-2=REPLACE-3&REPLACE-4
这个表达式,
^(.*\/folder\/[A-Za-z0-9-]*\?)\D+\d+=\D+\d+=\D+\d+&\D+\d+$
替换为
REPLACED-1=REPLACED-2=REPLACED-3&REPLACED-4
也可能有效。
如果您希望 simplify/modify/explore 表达式,regex101.com. If you'd like, you can also watch in this link 的右上面板已对其进行说明,它将如何匹配一些样本输入。