用于多次搜索和替换的正则表达式 Notepad++

用于多次搜索和替换的正则表达式 Notepad++

请帮我完成以下模式

当前文本

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

  1. 找什么:ALPHA(.*'BI_209')

    用。。。来代替:BI_209\1

    解释:括号内的正则表达式匹配的内容会被保存,并可以使用 调用\1。括号可以定义多个捕获组,例如(ALPHA)(.*)('BI_209'),可以通过反向引用\1, \2, \3...重复使用。

  2. 综合上述,你可以一次性完成所有替换:

    找什么:ALPHA(.*)'(BI_209|BI_213|BI_220)'

    用。。。来代替:\2\1'\2'

    这里,|符号指定要搜索的替代字符串。

  3. 如果您以后添加不同的代码,这是一个更通用的解决方案:

    找什么: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一位数字的数字。

相关内容