我有一个巨大的文本文件,其中的记录由字符串MSH标识。
我需要找到第200条记录。我希望可以在Notepad++中使用一个正则表达式,使我能够找到字符串MSH的第200个出现的位置。
最佳答案
如果您的文件只是一个巨大的单行,并且用字符串“MSH”分隔,则可以在正则表达式查找中使用它。
但是,请确保您的光标位于文件的开头,否则它只会从您开始的位置开始搜索下一个第200条记录!
找:
((.*?)MSH){199}
这应该突出显示前199条记录,因此下一个未突出显示的记录是第200条记录。
或者,再进一步一点!
再次,在正则表达式中找到replace,再次确保光标位于文件的开头。
找:
((.*?)MSH){199}((.*?)MSH{1}).*
代替:
$3
应该只用第200条记录替换窗口的全部内容。
N.B:假定字符串“MSH”不属于文件中任何记录的一部分。
作为一个脚注,我强烈怀疑这在大型文件中是否很快。几乎可以肯定,脚本是一个更好的选择。或者甚至可以将其放入Excel并使用文本到列。
关于regex - 在Notepad++中,如何找到字符串的第n个出现位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8863802/