![用于多次搜索和替换的正则表达式 Notepad++](https://linux22.com/image/1524410/%E7%94%A8%E4%BA%8E%E5%A4%9A%E6%AC%A1%E6%90%9C%E7%B4%A2%E5%92%8C%E6%9B%BF%E6%8D%A2%E7%9A%84%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%20Notepad%2B%2B.png)
请帮我完成以下模式
当前文本
ALPHA;111,'BI_209'
ALPHA;222,'BI_213'
ALPHA;AAA,'BI_209'
ALPHA;FFF,'BI_209'
ALPHA;123,'BI_220'
在 Notepad ++ 中第一轮查找和替换后的预期状态
BI_209;111,'BI_209'
ALPHA;222,'BI_213'
BI_209;AAA,'BI_209'
BI_209;FFF,'BI_209'
ALPHA;123,'BI_220'
如上所示,在第一轮中 - 我打算搜索特定模式* ALPHA* BI_209*
并替换为*BI_209*BI_209*
。
请帮助我在 FIND 和 REPLACE 字段中使用正确的正则表达式来实现我的计划。请注意,中间有各种文本,如“;111,”......“;222,”......“;AAA,”,不应更改或受到影响。
如果我得到查找和替换的模式,它将有助于第二轮(及以后)的多次查找和替换 - 以实现此输出
BI_209;111,'BI_209'
BI_213;222,'BI_213'
BI_209;AAA,'BI_209'
BI_209;FFF,'BI_209'
BI_220;123,'BI_220'
答案1
找什么:
ALPHA(.*'BI_209')
用。。。来代替:
BI_209\1
解释:括号内的正则表达式匹配的内容会被保存,并可以使用 调用
\1
。括号可以定义多个捕获组,例如(ALPHA)(.*)('BI_209')
,可以通过反向引用\1
,\2
,\3
...重复使用。综合上述,你可以一次性完成所有替换:
找什么:
ALPHA(.*)'(BI_209|BI_213|BI_220)'
用。。。来代替:
\2\1'\2'
这里,
|
符号指定要搜索的替代字符串。如果您以后添加不同的代码,这是一个更通用的解决方案:
找什么:
ALPHA(.*)'(BI_\d{3})'
用。。。来代替:
\2\1'\2'
这里
\d
匹配任意数字,和是的同义词[0-9]
;{3}
是重复因子;\d{3}
匹配任意三个数字的序列。
注意:由于括号是特殊字符,如果您想指定文字(
或)
需要用反斜杠对其进行转义,如下所示:\(
和\)
。
答案2
查找文本ALPHA...'BI_xxx'
并替换为'BI_xxx'...'BI_xxx'
:
- 打开查找和替换对话框
- 检查“正则表达式”
- 找什么:
ALPHA(.*'(BI_\d+)')
- 替换为:
\2\1
测试一下这里
这将匹配任意至少'BI_xxx'
为xxx
一位数字的数字。