我想查找包含超过 25 个单词的句子,例如,两个句点之间或任何结束点 (.?!) 之间的单词超过 25 个,同时忽略逗号。
有没有什么功能可以在 100 多页的文档中自动完成此操作?
答案1
您似乎明白,文本中的句号(以及问号和感叹号)可能会造成混淆。例如,根据您的定义(“两个句号之间的单词或任何结束点(.?!)……”),以下内容:
他们是英国长期科幻电视连续剧《神秘博士》的狂热粉丝(他们喜欢称自己为 Whovians),神秘博士,会告诉你主角的名字不是“神秘博士”,而是简单地“博士”。
算作两个句子,每个句子少于 25 个单词,因为“神秘博士”。有关真正困难的更多讨论和例子真的将英文文本分解成句子,参见 如何在 Linux 上将句子分行。
假设您不希望解决方案正确处理句内句号,并假设单词以空格(而不是制表符或换行符)分隔,则搜索模式如下:
<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @<[!.?\!]@ @
应该使用 Word 中的“通配符”搜索模式来查找长度超过 25 个单词的句子。
这仅<[!.?\!]@ @
重复了 25 次。
<
匹配单词的开头。我们可能不需要这个。[!…]
是一个字符组 — 一个不在括号中的字符。[!.?\!]
.
是除,?
或之外的任意字符!
。它匹配字母、数字和其他标点符号(例如引号、撇号、逗号、分号等)。请注意,!
括号内的 必须转义。@
表示一个或多个前面的表达式,因此[!.?\!]@
匹配一个单词(可能包括非终端标点符号。@
是一个或多个空格。
因此<[!.?\!]@ @
匹配一个单词(包括逗号等,但不包括句号等)和后面的空格。
我尝试使用(…){25,}
,但无法让它工作。