我想要一个正则表达式来匹配所有不匹配的希腊语(utf-8)单词:
- 以
. - 以
- - 以
' - 以数字结尾 (1-9)
- 从...开始
. - 从...开始
, - 从...开始
- - 第一个字母是大写
- 所有字母都是大写的
这可能吗?为了匹配希腊词,我使用\p{Greek}{3,}匹配至少 3 个字符的希腊 UTF-8 词。
我用 ruby 编写程序,但如果可以用 perl 或任何其他 cli 工具/语言完成,我将编写一个脚本来将输出转储到文本文件中。
(?<!\S)(?=\S*\p{Greek})(?![-,.\p{Lu}])(?![\p{Lu}\P{L}]+\b)\S+(?<![-.'1-9])(?!\S)
让我们分解一下这个野兽:
\S+中间,被一堆正负断言包围。(?<!\S)- 单词前面不能有非空白字符。这确保我们不会在单词中间开始匹配。(?=\S*\p{Greek})- 某处必须至少有一个希腊字母。(?![-,.\p{Lu}])- 单词不能以破折号、逗号、点或大写字母开头\p{Lu}。(?![\p{Lu}\P{L}]+\b)- 单词不得全部为大写字母和符号。(?<![-.'1-9])- 单词不得以破折号、圆点、撇号或数字 1 到 9 结尾。(?!\S)- 单词后面不能有非空白字符。这确保我们不会在一个单词中间结束我们的匹配。