查找第 n 次出现的符号并使用正则表达式替换

问题描述 投票:0回答:1

我有一个超过 20K 行的文件,每行都有 151 个“@”符号作为分隔符。我需要替换第 104、105、105 和 106 次出现“@”符号之间的值。我尝试使用 Excel,但遇到日期字段问题,并觉得在 Notepad++ 中替换很容易。有人可以提供正则表达式的输入吗?我尝试用第 n 次出现的符号替换,但它不起作用。

样品线

9007;624;@0@0@1@Company & Co. "XYZ" ;Comp & Co. HG;@@@Ger;Ger;@@@@0@0@@@@@@@@@uid=XYZ@@@@@Gery;@0@@@@@0@@@@@@@T@@@@@0@0@0@0@0@0@0@0@0@0@0@@@@@@@@@@@@@@@@1@1@1@1@1@@@@@@@@@@@@@@@@@@@@@@@@@@08.007.001.001 Bs;08.007.001.004 Zahlungen;üüüüüüü;äääää;@Sct;2006;Mar;da das Haus;@@@$S0et7xV0@568;536871132;36108;536871497;536871712;536871449;536907021;148000;@THA@@@uid=Compa@03/03/2016;12:41:00:00@doc@096@@0@@1@@@OHG | 0624 | Ger | 9007 | Ger;@@2005;1953;@B48D3B01257184408AF2F2D69BAC1DEF000000000000@268471076@@@@@@@0@@@@@@07/24/2012;07:39:00:00@@@@@@@@@@@@$S0et7xV0@0@[email protected]

以粗体突出显示的内容需要更换。感谢任何人对此的见解。

谢谢!

regex notepad++
1个回答
0
投票

您可以使用以下替换指令(按 Ctrl+H 打开查找/替换对话框):

查找内容:

^((?:[^@]*@){104})[^@]*@[^@]*

替换为:
\1Hello@World

搜索模式:
⦿ 正则表达式

全部替换

这里两个文本被替换为“Hello”和“World”。根据需要进行调整。

正则表达式的分解:

  • ^
    匹配行的开头
  • [^@]*@
    匹配一系列非@字符,后跟一个@。
  • (?:   ){104}
    :将
    (?: )
  • 内的图案重复 104 次
  • (     )
    :捕获可通过
    \1
    引用的捕获组中的匹配文本。
© www.soinside.com 2019 - 2024. All rights reserved.