如何编写正则表达式模式以获取匹配的字符串?

时间:2016-07-27 15:22:06

标签: c# regex c#-4.0

在为下面的字符串编写正则表达式模式时遇到了困难。我使用下面的模式来获取匹配的字符串。但是,我得到了错误。

注意:输入字符串可以是以下输入字符串中的任何一个。

string input = "IN-7874 - hello";
// or "IN-7874 - Hello"
// "IN-7874 - 1) hello"
// "IN-7874 - 1. hello"
// "IN-7874 - 1)hello"
// "IN-7874 - 1.hello"
string pattern = @"^[A-Z]+\\-^[0-9]\s+\\-\\s+^[A-Z]"; //[any number of capital letters]hyphen[any number of numbers(0-9)]space[hyphen]space[numbers or strings]
var a = Regex.Match(input, pattern);

有人可以帮我解决这个问题吗?

我的输出应采用[任意数量的大写字母]连字符[任意数量的数字(0-9)]空格[连字符]空格

的模式形式

示例:{SAM-123 - } //不要考虑大括号。

1 个答案:

答案 0 :(得分:1)

您可以使用

^[A-Z]+-[0-9]+\s+-\s+(?:[0-9]+[.)]\s*)?[A-Za-z]+

请参阅regex demo

<强>解释

  • ^ - 字符串开头
  • [A-Z]+ - 一个或多个大写ASCII字母
  • - - 连字符
  • [0-9]+ - 一位或多位
  • \s+ - 1+空格
  • - - 连字符
  • \s+ - 见上文
  • (?:[0-9]+[.)]\s*)? - 可选序列:
    • [0-9]+ - 1+位数
    • [.)] - 文字.)
    • \s* - 0+ whitespaces
  • [A-Za-z]+ - 一个或多个ASCII字母