Notepad++ 计算模式出现在字符串中的次数,然后替换

Posted

技术标签:

【中文标题】Notepad++ 计算模式出现在字符串中的次数,然后替换【英文标题】:Notepad++ count number of times a pattern appears in string and then do replace 【发布时间】:2015-02-24 22:59:22 【问题描述】:

我正在整理一些具有名称的文本,然后在其后面列出了几个 IP。如:

/bserver1-nfs01 10.61.53.206 10.61.53.207 10.61.53.208 10.61.53.209

进入:

/bserver1-nfs01 10.61.53.206
/bserver1-nfs01 10.61.53.207 
/bserver1-nfs01 10.61.53.208 
/bserver1-nfs01 10.61.53.209

我正在使用以下查找/替换命令

找到:(/.*?\s)(\b\d1,3\.\d1,3\.\d1,3\.\d1,3\b)\s(\b\d1,3\.\d1,3\.\d1,3\.\d1,3\b)\s(\b\d1,3\.\d1,3\.\d1,3\.\d1,3\b)\s(\b\d1,3\.\d1,3\.\d1,3\.\d1,3\b)

替换:\1\2\n\1\3\n\1\4\n\1\5

效果很好,除非我有一行少于 5 个 IP 地址,否则它们会被跳过。有没有一种简单的方法可以使它成为一个迭代调用?就像,计算这种模式出现了多少次然后替换那个数字?谢谢,我在今天之前从未使用过正则表达式,所以您能给我的所有帮助将不胜感激。

加布

【问题讨论】:

当时我想做这样的事情(可能仍然如此),Notepad++ 做不到,但 TextPad 可以。 (我仍然使用 Notepad++ 来做我能做的所有事情,但我需要 Textpad)。 \i 是它的代码。 谢谢,我会看看文本板。但是,下面的答案也会欺骗。 服务器后面总是IP地址吗? 如果您的问题已得到解答,那么接受答案将很有用。如果问题尚未得到解答,请说明您需要哪些额外信息。见***.com/help/accepted-answer 【参考方案1】:

我会稍微不同地处理这个问题。我会使用正则表达式来改变这样的行:

/bserver1-nfs01 10.61.53.206 10.61.53.207 10.61.53.208 10.61.53.209

进入:

/bserver1-nfs01 10.61.53.206
/bserver1-nfs01 10.61.53.207 10.61.53.208 10.61.53.209

然后我会多次点击全部替换,直到它报告没有进行任何更改。

因此,我会将您的 find 表达式更改为:

^(/[^\s]+\s)(\d1,3\.\d1,3\.\d1,3\.\d1,3)\s(\d1,3\.\d1,3\.\d1,3\.\d1,3)

以及替换使用:

\1\2\n\1\3

【讨论】:

好的,非常感谢,我想我想多了。您的解决方案效果很好。太棒了 感谢使用 NPP 语法的查找表达式。提供了匹配单个 IP 所需的内容。

以上是关于Notepad++ 计算模式出现在字符串中的次数,然后替换的主要内容,如果未能解决你的问题,请参考以下文章

在 Notepad++ 中智能突出显示时显示出现次数

递归计算字符串中的字符出现次数

计算字符在Ruby中的字符串数组中出现的次数

计算字符串中子字符串出现的次数

Oracle:一个查询,它计算字符串中所有非字母数字字符的出现次数

计算字符串在字符串中出现的次数[重复]