我有一个关于使用 Notepad++ 更改数字集的三部分问题。
我有如下数字块:
1415926535 8979323846 2643383279 5028841971 6939937510
5820974944 5923078164 0628620899 8628034825 3421170679
我怎样才能使用 Notepad++ 更改/改变这一点,如下所示
- 将每行 50 位数字(5 组,每组 10 位)分成每行 25 位数字的单行
- 每 5 位数字后插入一个连字符
- 确保 25 位数字后换行
如下:
14159-26535-89793-23846-26433
83279-50288-41971-69399-37510
58209-74944-59230-78164-06286
20899-86280-34825-34211-70679
完成后....
是否可以删除并用 x 替换特定字符 - 如下所示:
14159-26535-xxxx3-xxxx6-xxxx3
83279-50288-xxxx1-xxxx9-xxxx0
58209-74944-xxxx0-xxxx4-xxxx6
20899-86280-xxxx5-xxxx1-xxxx9
希望这对于 Notepad++ 来说不是一个太过高的要求?
答案1
答案2
我怎样才能使用 Notepad++ 更改/改变这一点,如下所示
- 将每行 50 位数字(5 组,每组 10 位)分成每行 25 位数字的单行
- 每 5 位数字后插入一个连字符,确保行
- 25 位数字后换行
使用手册记事本++,我们可以根据需要编写表达式来搜索和替换文本。
- 建立一个搜索表达式,首先将起始文本分解为子表达式,这将允许您构建结果。表达式应该一次描述一行,因为每行都有相同的模式。在本例中,我们希望 1 行变成 2 行。搜索表达式中的一行包含 50 个数字,分为 5 个大小相等的组,并由空格分隔。要识别数字,让我们使用一组定义为的字符:
[set] ⇒ 表示一组字符,例如 [abc] 表示任意文字字符 a、b 或 c。您还可以通过在字符之间添加连字符来使用范围,例如 [az] 表示从 a 到 z 的任何字符
在我们的例子中,我们想要匹配 0-9 之间的任何字符,因此我们可以使用[0-9]
。接下来,我们需要识别子表达式中的组,可以使用乘法运算符和{N}
。
{ℕ} ⇒ 匹配它适用的元素的ℕ个副本(其中ℕ是任何十进制数)。
N 由替换行模式确定,该模式有 25 位数字,分为 5 个大小相等的组,以“-”分隔。组的大小为 N,等于 5。因此,我们可以通过搜索[0-9]{5}
原始文本中的子表达式来生成替换文本。
下一个,编号捕获组可用于对替换操作的子表达式进行编号。
(子集) ⇒ 编号捕获组:括号标记正则表达式的子集,也称为子集表达式或捕获组。括号内容匹配的字符串(本例中用子集表示)可以与反向引用一起重复使用,也可以作为替换操作的一部分
因此,为了匹配单个子表达式并为以后提供编号引用,我们使用([0-9]{5})
。
然后,搜索表达式匹配一行就变成:
([0-9]{5})([0-9]{5}) ([0-9]{5})([0-9]{5}) ([0-9]{5})([0-9]{5}) ([0-9]{5})([0-9]{5}) ([0-9]{5})([0-9]{5})
- 为了建立替换表达式, A替换转义序列,,
$N
可用于:
$ℕ, ${ℕ}, \ℕ ⇒ 返回与第 ℕ 个子表达式(编号捕获组)匹配的内容,其中 ℕ 是一个正整数(1 或更大)。
因此,从上面的搜索表达式来看,$1
对应于14159(在第一行)。
综合起来,替换表达式对于单行来说将是:
$1-$2-$3-$4-$5\r\n$6-$7-$8-$9-$10
是否可以删除并用 x 替换特定字符 - 如下所示:
是的,这可以通过在适当的子表达式中选择这些字符并选择正确的编号引用来实现。例如,上面的搜索表达式包含([0-9]{5})
,这是稍后使用的一个由 5 位数字组成的不同编号引用。如果我们想用“x”替换第一个字符,这将变成[0-9]([0-9]{4}).
替换表达式的相应部分将是x$1
(假设它是第一个编号引用)。同样,如果我们想用“x”替换前 2 个字符[0-9]{2}([0-9]{3}).
,则xx$1
可以使用,依此类推。
对于这个具体案例:
14159-26535-xxxx3-xxxx6-xxxx3
83279-50288-xxxx1-xxxx9-xxxx0
58209-74944-xxxx0-xxxx4-xxxx6
20899-86280-xxxx5-xxxx1-xxxx9
这搜索表达式是:
([0-9]{5})([0-9]{5}) [0-9]{4}([0-9])[0-9]{4}([0-9]) [0-9]{4}([0-9])([0-9]{5}) ([0-9]{5})[0-9]{4}([0-9]) [0-9]{4}([0-9])[0-9]{4}([0-9])
这替换表达式是:
$1-$2-xxxx$3-xxxx$4-xxxx$5\r\n$6-$7-xxxx$8-xxxx$9-xxxx$10