Regex 获取正则表达式匹配的前n个字符

Regex 获取正则表达式匹配的前n个字符,regex,notepad++,Regex,Notepad++,我想从这个正则表达式中获取匹配的第一个n字符: (\d+\s*) 基本上我想用空格填充右键。因此,在这句话中: 12345␢␢␢␢␢␢␢␢123␢␢␢␢␢␢␢ 123␢␢␢␢␢␢␢␢␢12345␢␢␢␢␢␢ 最后,我想说: 12345␢␢␢␢␢123␢␢␢␢␢␢␢ 123␢␢␢␢␢␢␢12345␢␢␢␢␢ 一条线上始终有两个匹配项,且线的长度不变。多次通过 根据关于问题及其结构的额外信息,我建议采取以下步骤: 在第二个图案之前,将每一行一分为二 从每一行抓取所需的部分 重新组合行,使匹配项

我想从这个正则表达式中获取匹配的第一个
n
字符:

(\d+\s*)
基本上我想用空格填充右键。因此,在这句话中:

12345␢␢␢␢␢␢␢␢123␢␢␢␢␢␢␢
123␢␢␢␢␢␢␢␢␢12345␢␢␢␢␢␢
最后,我想说:

12345␢␢␢␢␢123␢␢␢␢␢␢␢
123␢␢␢␢␢␢␢12345␢␢␢␢␢
一条线上始终有两个匹配项,且线的长度不变。

多次通过 根据关于问题及其结构的额外信息,我建议采取以下步骤:

  • 在第二个图案之前,将每一行一分为二
  • 从每一行抓取所需的部分
  • 重新组合行,使匹配项位于其原始行上
  • 这意味着:

  • ^(\d*\s*)(\d*\s*)$
    替换为
    $1\r\n$2
    。如果您不在windows上,只需删除
    \r
    ,我对此表示怀疑。您也许应该考虑在一行末尾添加一个宏。这应该是文档其余部分中未包含的内容(例如
    )。
    $1
    表示替换第一个捕获的组(括号内的内容)。因此,将其替换为
    $1\r\n$2
  • 现在获取每行所需的长度:
    (^.{n})。*(#?)
    并替换为
    $1$2
    。这将捕获第一个
    n
    符号,并在找到宏时插入宏
  • 删除宏后的换行符:
    \r\n
    。请将其删除或替换为
    \0
  • 注释

    • 您必须先过滤匹配
      (^\d*\s*)
      的行
    • 如果需要另一个宏,请在答案上方的
      #
      子字段中添加出现的内容。它不应该包含在文件的其余部分,至少不应该包含在一行的末尾
    • 这个答案使用了反向引用,这应该是正确的
    单程 在这里也可能只通过一次

    ^(\d[\d\s]{n-1})[^\d]*(\d[\d\s]{n-1}).*$
    
    匹配这些行,如果提取组1和组2,这将从文件中筛选所需的输出。只需将其替换为
    $1$2

    替换:

    (\d[\d\s]{n-1})\s*
    
    与:


    这将替换一个数字后接
    n-1
    数字或空白字符,再接任意数量的空白字符后接匹配内容的第一个
    n
    字符(因此每行应获得2个匹配)。

    使用
    {n}
    再次匹配?不确定记事本(从未使用过),但在中,您可以简单地使用
    grep-o.\{n\}
    再次匹配,并获得所需的结果。您想用正则表达式表达什么?为什么像这样的东西还不够?@bro很好。它将适用于第一列。第二个呢?检查更新的问题,您想在一次搜索中执行此操作,并在记事本++中替换?只需根据您的标签进行询问。@nikh不一定一次通过即可
    $1