正则表达式 65 CPL 和无分词

Posted

技术标签:

【中文标题】正则表达式 65 CPL 和无分词【英文标题】:Regular Expression 65 CPL and No Word Breaks 【发布时间】:2021-04-15 16:20:40 【问题描述】:

我正在尝试完善一个正则表达式来获取文本段落并将它们排列为每行 65 个字符的限制,特别是不要拆分任何单词。

我正在使用 Apache OpenOffice 进行查找和替换。 我的 Find 表达式:

(.1,65\s)

我的替换表达式:

$1\n

奇怪的是 Find 表达式看起来可以在 https://regex101.com/ 上执行我想要的操作,但在 OpenOffice 中却不行。 我也在 Notepad++ 中尝试过,但它也不会产生与 regex101.com 相同的结果。

在 OpenOffice 中,它似乎遗漏了每一行的最后一个单词。 如果我将 Find 表达式更改为 (.1,65) 有效,但随后会拆分我不能拥有的单词。

这是一段示例文本;

我们为什么要使用它? 读者将成为一个早已确立的事实 在查看页面时被页面的可读内容分散注意力 布局。

我不是正则表达式方面的专家,因此非常感谢任何帮助。 除了 OpenOffice 查找和替换之外,还可以使用其他方法。

01 更新: 所以似乎我的 Find 表达式只在有软换行符(shift+enter)而不是硬换行符(enter)时才做我需要的。

如果有人知道我如何完善表达式,使其对硬换行符表现相同,那将是理想的。或者,我正在研究如何用软换行符替换硬换行符。 OpenOffice 确实支持这一点,但反过来 - 如果我找到 \n 并替换为 \n 它将用硬换行符替换软换行符。不过,我正在寻找相反的方式。

【问题讨论】:

它在 AOO 4.1.6 中对我有用。请务必在更多选项下选择正则表达式。另外,请将示例缩小很多(看起来大约 5 个单词应该足以演示此问题),然后显示您所经历的结果以及所需的结果。见***.com/help/minimal-reproducible-example。 @JimK 所以这似乎与回车或换行有关。如果您直接从上面复制该文本并粘贴到 OpenOffice 中,它确实可以工作。但是,如果您复制该文本并放入 .txt 文件(通过终端或 Mac 上的 textedit),则会产生不同的结果。我很困惑,因为我认为 .txt 文件会删除任何格式。当您将未格式化的文本 (.txt) 粘贴到 OpenOffice 中时,问题后的新行似乎也有更多的空白。继续调查,如果我找出原因会更新。 此外,这似乎是段落换行符和换行符之间的区别。我现在正试图弄清楚如何用换行符替换分段符。 要使用不同类型的换行符,请使用AltSearch。 【参考方案1】:

我们最终使用 NoteTab Light,因为内置的 Find and Replace 会根据需要处理正则表达式和换行符。

我不是无法让 AltSearch 使用这些表达式,但老实说,我也没有花太多时间。

【讨论】:

以上是关于正则表达式 65 CPL 和无分词的主要内容,如果未能解决你的问题,请参考以下文章

nltk 正则表达式分词器

正数范围 18-65 的正则表达式是啥?它必须只接受两位数

最全面的65条最常用正则表达式

如何使用组名使用正则表达式实现高效的分词器

正则表达式范围内的转义点

最全面的65条最常用正则表达式