[英]Regex to fetch offset c#
我有 3 个示例字符串(时区),我想获取它们的(偏移量)。
GMT-05:00 Eastern Time(Toronto)
(GMT - 06:00) Central Time(US, Canada)
GMT-10:00 Hawaii - Aleutian Standard Time(Honolulu)
我希望上面的字符串答案是这样的:
-05:00
-06:00
-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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.