我想要一个正则表达式来匹配所有希腊语(utf-8)的单词:
.
-
'
.
,
-
这可能吗?为了匹配希腊语单词,我使用\p{Greek}{3,}
匹配至少包含3个字符的希腊语UTF-8单词。
我在ruby中编写程序,但是如果它可以在perl或任何其他cli工具/语言中完成,我将编写一个脚本来将输出转储到文本文件中。
答案 0 :(得分:3)
(?<!\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)
- 单词后面不能包含非空格字符。这确保我们不会在一个单词中间结束我们的匹配。