我正在尝试提出一个正则表达式,该正则表达式匹配西里尔字母中的3个单词,其中也可以包含C#中的连字符。
匹配: “АБАБА”, “А-БА-БА-Б”,“А-Б-ААБАБ”等。
不匹配: “АБАБ”,“А-БАБ”,“АБАБ-”等。
到目前为止,我只有西里尔字母的正则表达式: ^ [\ u0400- \ u04FF] + $
答案 0 :(得分:1)
首先,让我们详细说明规则:
- Word必须以字母开头,以字母结尾
- Word可以包含任意数量的 连字符;每个连字符必须用字母包围(开始,悬空或 不允许加倍连字符)
所以对于单词我们有
[\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}$