Regex 将第一个字符替换为相同字符加上其他字符?

Regex 将第一个字符替换为相同字符加上其他字符?,regex,vim,vi,Regex,Vim,Vi,如果有一系列行(而不是整个文件)以可变数量的空格开头,后跟一些字母字符: aaaa bbbb cccc DDDD 您希望将其转换为: # aaaa # bbbb # cccc # DDDD 在Vi中你会怎么做 我的想法大致如下: s/[a-z,a-z]/#(某物)/ 但我不知道如何将(某物)表达为找到的匹配物 谢谢 :g/^ *[a-zA-Z]/s/^/# / g用于行匹配 /^*[a-zA-Z]/空格+字母 s/^/#/将行的开头替换为

如果有一系列行(而不是整个文件)以可变数量的空格开头,后跟一些字母字符:

   aaaa
   bbbb
   cccc
   DDDD
您希望将其转换为:

   # aaaa
   # bbbb
   # cccc
   # DDDD
在Vi中你会怎么做

我的想法大致如下:

s/[a-z,a-z]/#(某物)/

但我不知道如何将(某物)表达为找到的匹配物

谢谢

:g/^ *[a-zA-Z]/s/^/# /
  • g
    用于行匹配
  • /^*[a-zA-Z]/
    空格+字母
  • s/^/#/
    将行的开头替换为
要直接回答您的问题,
(某物)
应该是
&
。显然,表达式将匹配行中出现的第一个字母字符,并在那里插入

  • g
    用于行匹配
  • /^*[a-zA-Z]/
    空格+字母
  • s/^/#/
    将行的开头替换为
要直接回答您的问题,
(某物)
应该是
&
。显然,表达式将匹配行中出现的第一个字母字符,并在那里插入

  • g
    用于行匹配
  • /^*[a-zA-Z]/
    空格+字母
  • s/^/#/
    将行的开头替换为
要直接回答您的问题,
(某物)
应该是
&
。显然,表达式将匹配行中出现的第一个字母字符,并在那里插入

  • g
    用于行匹配
  • /^*[a-zA-Z]/
    空格+字母
  • s/^/#/
    将行的开头替换为
要直接回答您的问题,
(某物)
应该是
&
。显然,表达式将匹配行中出现的第一个字母字符,并在那里插入

修复sed命令(您可以将
\w
替换为[a-zA-Z],以适应您的环境)

解释
  • \1
    表示
    ()
    中的上一个匹配项,如果有多对
    ()
    ,请使用序列号
    \2
    \3
如果需要在vi/vim中执行此操作,请运行以下命令:

:%s/\(^ \w*\)/#\1/g
修复sed命令(您可以为您的环境将
\w
替换为[a-zA-Z])

解释
  • \1
    表示
    ()
    中的上一个匹配项,如果有多对
    ()
    ,请使用序列号
    \2
    \3
如果需要在vi/vim中执行此操作,请运行以下命令:

:%s/\(^ \w*\)/#\1/g
修复sed命令(您可以为您的环境将
\w
替换为[a-zA-Z])

解释
  • \1
    表示
    ()
    中的上一个匹配项,如果有多对
    ()
    ,请使用序列号
    \2
    \3
如果需要在vi/vim中执行此操作,请运行以下命令:

:%s/\(^ \w*\)/#\1/g
修复sed命令(您可以为您的环境将
\w
替换为[a-zA-Z])

解释
  • \1
    表示
    ()
    中的上一个匹配项,如果有多对
    ()
    ,请使用序列号
    \2
    \3
如果需要在vi/vim中执行此操作,请运行以下命令:

:%s/\(^ \w*\)/#\1/g

要在混合中再添加一个选项:
:%s/^\s\+/&


/^\s\+
匹配行开头的一个或多个空格,将
&
替换为匹配的字符串,然后将
#
添加到替换中。

要在混合中添加一个以上选项:
:%s/^\s\+/&


/^\s\+
匹配行开头的一个或多个空格,将
&
替换为匹配的字符串,然后将
#
添加到替换中。

要在混合中添加一个以上选项:
:%s/^\s\+/&


/^\s\+
匹配行开头的一个或多个空格,将
&
替换为匹配的字符串,然后将
#
添加到替换中。

要在混合中添加一个以上选项:
:%s/^\s\+/&


/^\s\+
匹配行首的一个或多个空格,将
&
替换为匹配的字符串,然后将
#
添加到替换中。

有趣!就好像你把两个正则表达式合并成了一个。但是如果你想在m,n的范围内,而不是在全局范围内,怎么办?我试着用m,n代替g,它的注释超过了给定的范围。@Robert不要删除
g
<代码>:3,7g/^*[a-zA-Z]/s/^/#/。有趣!就好像你把两个正则表达式合并成了一个。但是如果你想在m,n的范围内,而不是在全局范围内,怎么办?我试着用m,n代替g,它的注释超过了给定的范围。@Robert不要删除
g
<代码>:3,7g/^*[a-zA-Z]/s/^/#/。有趣!就好像你把两个正则表达式合并成了一个。但是如果你想在m,n的范围内,而不是在全局范围内,怎么办?我试着用m,n代替g,它的注释超过了给定的范围。@Robert不要删除
g
<代码>:3,7g/^*[a-zA-Z]/s/^/#/。有趣!就好像你把两个正则表达式合并成了一个。但是如果你想在m,n的范围内,而不是在全局范围内,怎么办?我试着用m,n代替g,它的注释超过了给定的范围。@Robert不要删除
g
<代码>:3,7g/^*[a-zA-Z]/s/^/#/。我对问题进行了重新措辞,以明确这些字符串不是从行首开始的。阿尔索