正则表达式:选择每行开头前 2 个字母之后但直到破折号的所有内容

正则表达式:选择每行开头前 2 个字母之后但直到破折号的所有内容

我有很多这样的行:

af - miracle asfsa
am - facut asfa
az - ali baba asfa
be - strong asas
ty - asfa asfsa
...

我想选择/删除前 2 个字母之后的行。我创建了一个正则表达式,但它保留了前 2 个字母之前的空格。我还需要排除那个空格。

搜索:^.?\w\W{1}.*?

预期结果应该是:

af
am
az
be
ty
...

答案1

  • Ctrl+H
  • 找什么:^\w\w\K.+$
  • 用。。。来代替:LEAVE EMPTY
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • Replace all

解释:

^           # beginning of line
    \w\w        # 2 word character
    \K          # forget all we have seen until this position
    .+          # 1 or more any character but newline
$           # end of line

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

答案2

替代:

  • Ctrl+F
  • 找什么:^[a-z]{2}\K.*$
  • 查看 环绕
  • 查看 正则表达式
  • Find All in Current Document

或者

  • Ctrl+F
  • 找什么:(?<=^.{2}).*$
  • 查看 环绕
  • 查看 正则表达式
  • Find All in Current Document

答案3

以下 sed 脚本使用正则表达式来隔离前两个字符:

sed 's/\(..\).*/\1/'

它按照您的示例预期的那样工作。

相关内容