如何替换行中间由空白(空格、制表符)分隔且具有一定长度的模式?

如何替换行中间由空白(空格、制表符)分隔且具有一定长度的模式?

例如:

[email protected] $2y$12$MTg3MTAwMTY5MTllYzA5NO414qUGtsj7kb7uzIlQbSxjg6nzGHRpC    arleyrua

我想把它改造成:

[email protected]:arleyrua

中间的线段有 60 个各种字符(字母数字和符号),我想用一个:字符替换它(包括后面和后面的空格)。

答案1

您可以使用以下正则表达式来匹配任意长度的两个空格之间的 60 个字符(任何类型)(为了清楚起见,我添加了括号,但它们不是必需的):

([ \t]+)(.{60})([ \t]+)

分解:

[ \t]+ matches any number of spaces and tabs
.{60}  matches 60 occurences of any character
()     are there just for visual grouping (in this particular case)

使用此作为测试用例:

asdojiajdsa 01234af7890123456789g12345678901234abcd901234567890123456789 zzzzzzcasdaf
fwqiojiofjwif 01234af78901AAAA6789g12345678!!!234abcd901234567890123456789 adsidoqpwpz
qpsppwpqpweqp 0DSF4af7890123456789g12345678901234abcd?01234567890123456789 oixzjioqdq
qpsppwpqpweqp 4324343 oixzjioqdq

当我用以下正则表达式替换时,得到以下结果:

asdojiajdsa:zzzzzzcasdaf
fwqiojiofjwif:adsidoqpwpz
qpsppwpqpweqp:oixzjioqdq
qpsppwpqpweqp 4324343 oixzjioqdq

答案2

假设格式始终为:

任意字符无空格 |SPACE| 任意字符无空格 |SPACE| 任意字符无空格

将其放入查找中:

.*
注意这是 |Space|FullStop|Asterisk|Space| - 前后各一个空格

并将其替换为:

:(
单冒号)

确保已选择“正则表达式”

在此处输入图片描述

答案3

  • Ctrl+H
  • 找什么:^\S+\K\h+\S{60}\h+
  • 用。。。来代替::
  • 检查环绕
  • 检查正则表达式
  • Replace all

解释:

^           # beginning of line
  \S+       # 1 or more non spaces
  \K        # forget all we have seen until this position
  \h+       # 1 or more horizontal spaces (i.e. space or tab)
  \S{60}    # 60 non spaces
  \h+       # 1 or more horizontal spaces

给定示例的结果:

[email protected]:arleyrua

屏幕截图:

在此处输入图片描述

相关内容