繁体   English   中英

正则表达式获取偏移量 c#

[英]Regex to fetch offset c#

我有 3 个示例字符串(时区),我想获取它们的(偏移量)。

  1. GMT-05:00 Eastern Time(Toronto)
  2. (GMT - 06:00) Central Time(US, Canada)
  3. GMT-10:00 Hawaii - Aleutian Standard Time(Honolulu)

我希望上面的字符串答案是这样的:

  1. -05:00
  2. -06:00
  3. -10:00

我有一个正则表达式[^0-9-:+] ,它给出了第一个和第二个示例所需的答案,但对于第三个示例,结果为-10:00-

请帮我构建一个所需的正则表达式来获取偏移量。

尝试使用正则表达式[+-]?\s?\d{2}:\d{2}匹配可选符号,然后匹配两个小数序列

例子

你可以使用

\bGMT\s*([-+]?)\s*(\d+:\d+)

请参阅正则表达式演示 细节:

  • \bGMT - 一个完整的GMT
  • \s* - 0+ 空格
  • ([-+]?) - 第 1 组:可选-+
  • \s* - 0+ 空格
  • (\d+:\d+) - 1+ 位, : ,1+ 位。

然后,您需要连接两组以获得最终值:

var strs = new String[] {"GMT-05:00 Eastern Time(Toronto)","(GMT - 06:00) Central Time(US, Canada)","GMT-10:00 Hawaii - Aleutian Standard Time(Honolulu)"};
foreach (var s in strs)
{
    var result = Regex.Match(s, @"\bGMT\s*([-+]?)\s*(\d+:\d+)");
    if (result.Success) {
        Console.WriteLine($"Parsing '{s}'\nResult: {result.Groups[1].Value}{result.Groups[2].Value}");
    }
}

C# 演示,output:

Parsing 'GMT-05:00 Eastern Time(Toronto)'
Result: -05:00
Parsing '(GMT - 06:00) Central Time(US, Canada)'
Result: -06:00
Parsing 'GMT-10:00 Hawaii - Aleutian Standard Time(Honolulu)'
Result: -10:00

这个正则表达式会给你预期的结果:

[\+|-]?\s*\d+:\d+

此外,它还考虑了可能的空格

例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM