正则表达式从GMT字符串中提取时间

时间:2017-03-01 20:28:24

标签: c# regex

我有

之类的字符串
(GMT -4:00)Puerto Rico
(GMT -3:30)Newfoundland
(GMT -3:00)Asuncion
(GMT +2:00)Athens

我如何从这些字符串中提取时间? 这是我糟糕的镜头:\([0-9](.*?)\) 结果应如下所示:-4:00, -3:30, -3:00...

我对此非常不满。

1 个答案:

答案 0 :(得分:3)

您可以仅使用

[-+]\d+:\d+

请参阅regex demo

<强>详情:

  • [-+] - 匹配-+
  • \d+ - 一位或多位
  • : - 冒号
  • \d+ - 一位或多位数。

enter image description here

C#:

var results = Regex.Matches(s, @"[-+]\d+:\d+", RegexOptions.ECMAScript)
    .Cast<Match>()
    .Select(m => m.Value)
    .ToList();

处理每个单独输入的可能替代non-regex solution

var s = "(GMT -4:00)Puerto Rico";
var res = s.Split(new[] {" ", ")"}, StringSplitOptions.RemoveEmptyEntries)
    .Skip(1)
    .FirstOrDefault();