正则表达式仅选择特定数量的空格

正则表达式仅选择特定数量的空格

我正在使用 notepad++,我想执行查找和替换操作。
例如

  • 4 个空格代表 1 个制表符
  • 6 个空格意味着 2 个制表符,等等。

在我的文件中,所有空格都在每行的开头。

我应该使用什么正则表达式来查找确切的空格数?
我想用制表符替换空格(例如基于 4 个空格或 6 个空格的单制表符或双制表符)

注意:该文件是一个分类文件,它解释了 4 个空间是父级,6 个空间是子级,8 个空间是子级的子级。

文件示例:

Agriculture, forestry and fishing
 Crop and animal production, hunting and related service activities
   Growing of non perennial crops
     Growing of cereals (except rice), leguminous crops and oil seeds
     Growing of rice
     Growing of vegetables and melons, roots and tubers

答案1

正则表达式找出行首空格数的语法是

^(space_character){待找到的空间数量}

例如,以下正则表达式将找到 4 个空格
^ {4}

在替换框中使用
"\t"
用一个标签替换您的查找内容。
对于两个标签,请使用
“\t\t”

答案2

也许以下模式可以满足您的要求(尖括号括起模式):

四个前导空格变成一个制表符

Find: <^ {4}([^ ].*)$>
Replace: <\t\1>

六个前导空格变为两个制表符

Find: <^ {6}([^ ].*)$>
Replace <\t\t\1>

解释

  • 正如其他答案所指出的,^匹配一行的开头。
  • 另请注意,花括号{#}表示法指定特定重复次数的匹配。
  • 方括号中的内容,[^ ],是匹配单个非空格字符的字符类(方括号定义字符类,^此处的前导表示反转类)。
  • .*$匹配任意数量的任何类型的字符(可能包括换行符,具体取决于 Regex 引擎的设置方式)直到行尾。
  • 周围的括号([^ ].*)表示模式内定义的组,它(希望取决于 Notepad++ 中的 Regex 引擎)在 Replace 表达式中通过 检索\1

相关内容