【问题标题】:Regex expression to replace different values based on multiple criterias正则表达式根据多个条件替换不同的值
【发布时间】:2020-01-16 09:09:17
【问题描述】:

我正在尝试找到一个可以在 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 表达式做的事情:

  • 将“REPLACE-THIS-1”替换为“REPLACED-1” 注意:所以基本上当它找到第一个“?”它将用特定的“REPLACED-1”替换“REPLACE-THIS-1”,直到它到达“=”符号
  • 用“REPLACED-2”替换“REPLACE-THIS-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 regex-negation regex-group regex-greedy regexp-replace


    【解决方案1】:

    这个正则表达式应该做你想做的事。它查找包含 /folder/ 后跟一些随机文本、?a=b=c&d 形式的 URL,其中 abcd 可能包含任何非空白字符(ab=c& 除外)。

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

    替换为

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

    Demo on regex101

    【讨论】:

      【解决方案2】:

      这个表情,

      ^(.*\/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 中观看它如何与一些示例输入匹配。


      【讨论】:

      • 非常感谢!它也有效!真的很感激!你们不知道这为我节省了多少工作!如果可以的话,我会赞成两者都是好的答案,因为两者都有效!
      猜你喜欢
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 2015-02-21
      • 2012-01-25
      相关资源
      最近更新 更多