我正在尝试提出一个正则表达式,该正则表达式匹配西里尔文中的 3 个单词,在 C# 中也可以包含连字符。
匹配: "АБ АБ А", "А-Б А-Б А-Б", "А-Б-А АБ АБ"等
不匹配: "АБ АБ", "АБ АБ", "АБ АБ-"等
到目前为止,我只有西里尔字母的正则表达式:^[\u0400-\u04FF]+$
最佳答案
首先,让我们详细说明规则:
- Word must start from letter, end by letter
- Word can contain any number of hyphens; each hyphen must be surrounded by letters (starting, dangling or doubled hyphens are not allowed)
所以对于单个单词我们有
[\u0400-\u04FF](-?[\u0400-\u04FF]+)*
一些例子:
АБ // correct
АБ-А-АБ // correct (with hyphens)
Z // incorrect: non cyrillic letter
-А // incorrect: starting hyphen
А- // incorrect: dangling hyphen
А--Б // incorrect: double hyphen
现在,对于单词:我们需要 正好三个 单词,用任意数量 的空格分隔 \s
:
^[\u0400-\u04FF](-?[\u0400-\u04FF]+)*(\s+[\u0400-\u04FF](-?[\u0400-\u04FF]+)*){2}$
关于c# - 正则表达式匹配西里尔字母中可能包含连字符的三个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37571976/