c# - 正则表达式匹配西里尔字母中可能包含连字符的三个单词

标签 c# .net regex

我正在尝试提出一个正则表达式,该正则表达式匹配西里尔文中的 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/

相关文章:

.net - System.ExecutionEngineException 失败

regex - 使用重写规则清理 url 不起作用

c# - 如何使用 twilio 重复消息

c# - 如何将本地化 DLL (MyLibrary.resources.dll) 编译成单个 DLL?

c# - 如何检查当前用户是否在管理组c#

python - 正则表达式查找搜索词并将结果放入另一个数据文件中?

ruby - 获取一串 html、将其切碎并将每一部分放入一个数组中的最佳方法是什么?

c# - WPF 可检查菜单项中缺少复选标记

c# - 打开“获取目录”对话框时出现 COM 类工厂错误 80040154

c# - 如何读出 protected 成员