代码之家  ›  专栏  ›  技术社区  ›  Mordork

在LibreOffice Writer中使用正则表达式删除除每个单词的第一个字母外的所有单词

  •  1
  • Mordork  · 技术社区  · 10 月前

    我在网上和这里找到了几篇关于如何使用正则表达式和Microsoft word删除段落(或整篇文本)中每个单词的第一个字母以外的所有单词的帖子,但在LibreOffice Writer中似乎没有任何效果。

    我一直在尝试使用“查找和替换”对话框,并在选项中选中正则表达式。

    例如:

    Lorem ipsum dolor sit amet,经过讨论,他做了一个临时的工作和大量的工作。

    将变成:

    L i d s a,c a e,s d e t u e m a。

    保持标点符号和区分大小写会很好。我也不反对为此使用不同的方法/程序。

    2 回复  |  直到 10 月前
        1
  •  2
  •   Tim Biegeleisen    10 月前

    假设LibreOffice的正则表达式支持固定宽度的外观,您可以按照以下模式进行匹配:

    (?<=\w)\w
    

    然后替换为空字符串。此模式将匹配除这些字符之外的任何单词字符 前面有单词字符(例如在单词的开头)。

    这是跑步 demo p

    编辑:

    正如评论中所建议的,我们可以将模式优化为:

    (?<=\w)\w+
    

    这将一次性匹配整个子单词,减少替换步骤的数量。

        2
  •  2
  •   Flash Thunder    10 月前

    使用查找、更换和检查 regex ( Regular expressions )复选框。

    搜索: \b(\w)\w+ , 替换为: $1

    • \b 是一个单词边界锚点,确保匹配从单词的开头开始。
    • (\w) 捕获单词的第一个字母,并将其作为第一组
    • \w+ 与单词的其余部分匹配,将被替换。
    • 1. 在replace字段中插入第一个捕获的组(在本例中为第一个字母)。
    推荐文章