regex - 正则表达式根据多个条件替换不同的值
问题描述
我正在尝试找到一个可以在 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”,直到它到达“=”符号
- "REPLACE-THIS-2" 和 "REPLACED-2" 注意:这个在第一个 "=" 找到,第二个 "=" 找到之间
- "REPLACE-THIS-3" 与 "REPLACED-3" 注意:这是找到第二个 "=" 之后的文本
- “REPLACE-THIS-4”与“REPLACE-4”注意:问题是“REPLACE-THIS-4”有时也包含“=”符号,但我想替换“REPLACE-”之后的所有文本这-3&"
注意:REPLACED-1/REPLACED-2/REPLACED-3/REPLACED-4 始终相同,它们不会改变
我面临的最大问题是所有这些 replace-1/-2-/3/-4 彼此不同(我的意思是所有 URL 都有不同的值),所以如果我可以使用正则表达式会很棒/多个正则表达式替换!
太感谢了!
解决方案
这个正则表达式应该做你想做的。它查找包含/folder/
后跟一些随机文本的 URL,a?
然后是形式a=b=c&d
where a
, b
, c
andd
可能包含任何非空白字符(除了=
fora
和b
, 和&
for c
)。
(\/folder\/[^?]+\?)[^=\s]+=[^=\s]+=[^&\s]+&.*(?=\s|$)
这被替换为
\1REPLACE-1=REPLACE-2=REPLACE-3&REPLACE-4
推荐阅读
- javascript - React.js 处理 json 中缺失的数据(TypeError: Cannot read property 'prefix' of null)
- mysql - 如何将具有预定义值的 varchar(191) 列转换为 MySQL 中的枚举?
- python - 角色越来越粘在一起
- java - 无法解密节点 js Text i Java AES-256-GCM 获取标签不匹配
- python-3.x - Python - 2*N 矩阵
- mongodb - 如何从 mongoose 的文档中删除某个 id?编辑:为什么这不起作用(见编辑)
- c++ - QT5 Widgets 大小切换问题
- flutter - 如何在我的 Flutter 应用程序中放置一个计数器,使用户每天打开应用程序都会增加?
- laravel - 通过传递变量从模型调用函数
- user-interface - 如何在 Flutter 中为 Text 元素设置应用程序范围的 fontSize?