一些实用的正则表达式

Table of Contents

请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com

生成一个正则表达式,把每一个中文自然段落前的空格都去掉

可以使用以下正则表达式来去除每个中文自然段落前的空格:

正则表达式:

^[ \t ]+

替换为: 空字符串(即删除匹配到的内容)

解释:

  1. ^ 匹配行的开头(在多行模式下)。
  2. [ \t ]+ 匹配一个或多个:
    • 半角空格(
    • 制表符(\t
    • 全角空格( ,Unicode \u3000

使用方式:

  • 启用多行模式/m 标志),使 ^ 能匹配每行的开头。
  • 全局匹配/g 标志),处理所有符合条件的空格。

示例(JavaScript):

const text = `    这是一个前面有半角空格的段落。
 这是一个前面有全角空格的段落。
    Another mixed space paragraph.`;

const result = text.replace(/^[ \t ]+/gm, '');
console.log(result);

输出:

这是一个前面有半角空格的段落。
这是一个前面有全角空格的段落。
Another mixed space paragraph.

注意事项:

  1. 该正则表达式会删除每行开头的所有空格(包括全角/半角),适用于典型的首行缩进场景。
  2. 如果段落中存在需要保留的非开头空格(如英文单词间的空格),不会被误删。
  3. 如果文本包含代码块等需要保留缩进的结构,建议先提取自然段落再处理。

生成一个正则表达式,删除空白行,纯空格符的行也算空白行

可以使用以下正则表达式删除所有空白行(包括仅含空格/制表符等空白字符的行):

正则表达式:

^\s*$

替换为: 空字符串(即删除匹配到的整行)


解释:

  1. ^ 匹配行的开头(需启用多行模式)
  2. \s* 匹配零个或多个空白字符(包括:空格、制表符\t、换页符等)
  3. $ 匹配行的结尾(需启用多行模式)

使用方式:

  • 启用多行模式 (/m 标志),使 ^$ 能匹配每行的开头和结尾
  • 全局匹配 (/g 标志),处理所有符合条件的行

示例(JavaScript):

const text = `第一段内容(非空白行)

       (纯空格/全角空格行)
  
\t\t(制表符行)

(空行)`;

const result = text.replace(/^\s*$/gm, '');
console.log(result);

输出结果:

第一段内容(非空白行)
(空行)

进阶优化版:

如果希望同时删除连续的多个空白行(将多个连续空白行合并为一个空行):

^\s*$\n+

替换为:

\n

不同场景的适配:

场景 正则表达式 说明
删除所有空白行 ^\s*$ 包括纯空格/制表符行
保留至少一个空行 ^\s*$(?=\n^\s*$) 将多个连续空白行合并为一个空行
处理 CRLF 换行符(Windows) ^\s*\r?\n 适配 \r\n 换行符

注意事项:

  1. 在 VSCode、Sublime 等编辑器中直接使用 ^\s*$ 即可
  2. 在 Notepad++ 中需使用 ^\s+$\r?\n 来包含换行符
  3. 如果文件最后一行是空白行,可能需要额外处理文件末尾的空行

word中把空白行删除的方法是什么

在 Microsoft Word 中删除空白行(包括仅含空格/制表符的"伪空白行"),可以通过以下 3 种方法实现:


方法 1:使用查找替换(推荐)

适用场景:快速批量删除所有空白行

  1. Ctrl + H 打开替换对话框
  2. 查找内容 输入:
    ^p^p
    
    ^p 表示段落标记/换行符)
  3. 替换为 输入:
    ^p
    
  4. 点击 全部替换重复操作直到提示"已完成 0 处替换"
  5. 继续处理含空格的"伪空白行":
    • 查找内容 输入:
      ^w^p
      
      ^w 表示任意空白字符,包括空格/制表符)
    • 替换为 留空
    • 点击 全部替换

方法 2:显示隐藏符号后手动删除

适用场景:少量空白行处理

  1. 点击 开始 选项卡 -> 显示/隐藏编辑标记
  2. 识别以下两种空白行:
    • 纯空白行:连续两个 符号
    • 伪空白行:行内有空格 · 或制表符 ,结尾带
  3. 手动删除这些行

方法 3:通过段落设置过滤

适用场景:保留段落结构的同时压缩空白

  1. 全选文本 (Ctrl + A)
  2. 右键选择 段落
  3. 间距 部分:
    • 段前间距:设置为 0 行
    • 段后间距:设置为 0 行
    • 行距:选择 单倍行距

进阶技巧:使用通配符(支持复杂匹配)

  1. Ctrl + H 打开替换对话框
  2. 勾选 使用通配符
  3. 查找内容输入:
    [ ]{1,}^13
    
    [ ] 表示任意空格,{1,} 表示至少 1 个,^13 是段落标记的 ASCII 码)
  4. 替换为输入:
    ^p
    
  5. 点击 全部替换

⚠️ 注意事项

  1. 操作前建议 备份文档
  2. 如果处理网页复制的文本,建议先执行 Ctrl + A -> Ctrl + Q 清除格式
  3. 不同版本 Word 的段落标记可能有差异:
    • Windows:^p(CR+LF)
    • macOS:^r(CR)

生成一个通配符,在word中,把每一个中文自然段落前的空格都去掉。

在 Microsoft Word 中使用通配符删除中文段落前的空格,可按照以下步骤操作:


最终解决方案

通配符表达式:

(^13|^)([  ]{1,})([一-鿿])

替换为:

\1\3

分步操作指南

  1. 打开替换对话框
    按下 Ctrl + H 打开查找和替换窗口。

  2. 启用通配符模式

    • 点击左下角 更多 → 勾选 使用通配符
  3. 输入表达式

    • 查找内容(<^13|^)([  ]{1,})([一-鿿])
      (直接复制以下内容到输入框,确保包含半角空格和全角空格)
      (^13|^)([  ]{1,})([一-鿿])
      
    • 替换为\1\3
  4. 执行替换
    点击 全部替换,即可删除所有中文段落前的空格。


原理解释

组件 说明
`(^13 ^)`
([  ]{1,}) 匹配 1 个及以上半角空格/全角空格(需手动输入这两种空格),对应 \2
([一-鿿]) 匹配任意中文字符(Unicode 范围),对应替换结果的 \3

通过保留段落标记/文档开头 (\1) 和首个中文字符 (\3),精准移除中间的空格。


实际效果演示

替换前:

^13    这是带半角空格的段落
  ^13  这是带全角空格的段落
    文档开头的空格段落

替换后:

^13这是带半角空格的段落
^13这是带全角空格的段落
文档开头的空格段落

注意事项

  1. 空格输入技巧

    • 在「查找内容」中需手动输入:
      • 半角空格:按键盘空格键
      • 全角空格:切换中文输入法,按 Shift + 空格 后输入
  2. 兼容性验证
    此方案适用于:

    • Microsoft Word 2010 及以上版本
    • 中英文混合排版场景(不会误删英文单词间的空格)
  3. 进阶扩展
    如需同时删除段首的 数字/字母前空格,可将 [一-鿿] 改为 [一-鿿a-zA-Z0-9]


失败排查表

现象 原因 解决方案
提示“未找到搜索项” 未正确输入全角空格 在查找框中手动输入全角空格
替换后段落标记丢失 错误删除 ^13 检查表达式中的 `(^13
中文后的空格未被删除 未启用通配符模式 勾选「使用通配符」

通过此方案,可高效解决中文段落首行缩进清理问题。

kumakoko avatar
kumakoko
pure coder
comments powered by Disqus