【问题标题】:How to write the regex pattern to get the matched string?如何编写正则表达式模式来获取匹配的字符串?
【发布时间】:2016-12-01 17:08:27
【问题描述】:

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

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

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 - }// 不考虑大括号。

【问题讨论】:

  • 您的 input var 代码已损坏,如果这些是文字引号,请转义其中的引号。此外,您必须在模式的开头想要 1 ^,其他的应该被删除。试试^[A-Z]+-[0-9]+\s+-\s+[A-Za-z]+。或^[A-Z]+-[0-9]+\s+-\s+(?:\d+[.)]\s*)?[A-Za-z]+
  • @Wiktor Stribiżew。谢谢你。有效。将此标记为答案。
  • 最后一个,对吧?
  • @Wiktor Stribiżew 是的。最后一个有效。

标签: c# regex c#-4.0


【解决方案1】:

你可以使用

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

regex demo

解释

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
相关资源
最近更新 更多