在为下面的字符串编写正则表达式模式时遇到了困难。我使用下面的模式来获取匹配的字符串。但是,我得到了错误。
注意:输入字符串可以是以下输入字符串中的任何一个。
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 - } //不要考虑大括号。
答案 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字母