正则表达式可根据多个条件替换不同的值

时间:2019-09-15 05:33:13

标签: regex regex-negation regex-group regex-greedy regexp-replace

我试图找到一个可以在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

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

这是我要使用REGEX表达式进行的操作:

  • “ REPLACE-THIS-1”和“ REPLACED-1” 注意:因此基本上在找到第一个“?”时它将替换为“ REPLACED-1”之后的“ REPLACE-THIS-1”,直至达到“ =“ symbol
  • “ 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都有不同的值),所以如果我能使用正则表达式/多个正则表达式公式替换!

非常感谢您!

2 个答案:

答案 0 :(得分:0)

此正则表达式应该执行您想要的操作。它寻找一个URL,该URL包含/folder/,后跟一些随机文本,一个?,然后是a=b=c&d形式,其中ab,{{ 1}}和c可以包含任何非空白字符({{1}和d的{​​{1}}和=的{​​{1}}除外)

a

已替换为

b

Demo on regex101

答案 1 :(得分:0)

此表达式

^(.*\/folder\/[A-Za-z0-9-]*\?)\D+\d+=\D+\d+=\D+\d+&\D+\d+$

替换为

$1REPLACED-1=REPLACED-2=REPLACED-3&REPLACED-4 

可能也可以。


如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。