用于在 LibreOffice Writer 中的任何位置查找重复(部分)句子的正则表达式代码?

问题描述 投票:0回答:1

我创建了一个 RegEx 代码来查找以下内容:
- 字符串或字符串的一部分(至少 5 个连续的单词),在整个文本范围内至少出现两次
- 整个文本范围都在表格中。
/ ([\w]{1,}[\s]{1,}[\w]{1,}[\s]{1,}[\w]{1,}[\s]{1, }[\w]{1,}[\s]{1,}[\w]+)(?=.* {1,})/gm

我只使用了这部分 RegEx,因为 LibreOffice 不想识别上面的整个 RegEx:
([\w]{1,}[\s]{1,}[\w]{1,}[\s]{1,}[\w]{1,}[\s]{1,} [\w]{1,}[\s]{1,}[\w]+)(?=.* {1,})

问题:
- RegEx 仅查找出现在同一段中但不是段间的文本部分。整个文本都在范围内。
右边那段红色下划线的文字(我下划线的那个)应该也能找到,但是没有。 IOW:我想标记重复项,即使它们出现在文档/另一个单元格中的其他地方。

我在 OpenAI 中尝试过 ChatGPT,但无济于事。
请帮忙。我也用MS Word,所以通配符也可以。

duplicates wildcard regex-lookarounds find-replace libreoffice-writer
1个回答
0
投票

根据https://help.libreoffice.org/latest/en-US/text/swriter/guide/search_regexp.html:

使用正则表达式的搜索只能在一个段落内进行。

但是对于纯文本,没有必要将自己局限于 LibreOffice。例如,有 Vim 等文本编辑器、grep 等命令行工具或 Perl 等编程语言(或 Python 等使用相同概念但需要更多代码的现代语言)。

对于不需要系统上任何特定内容的解决方案,请使用以下网站(示例包含在链接中):https://regex101.com/r/pF3EN3/1

在那个例子中,我使用了以下正则表达式:

/\b((?:[\w]{1,}[\s]{1,}){4}[\w]+)(?=.*\b\1{1,})/s

重要的部分是末尾的

/s
标志,这意味着输入将被视为single行,以便
.
匹配换行符。

© www.soinside.com 2019 - 2024. All rights reserved.