正则表达式获取偏移量c#
我有3个示例字符串(时区),我想获取它们的(偏移量)正则表达式获取偏移量c#,c#,regex,C#,Regex,我有3个示例字符串(时区),我想获取它们的(偏移量) GMT-05:00东部时间(多伦多) (格林尼治标准时间-06:00)中部时间(美国、加拿大) GMT-10:00夏威夷-阿留申标准时间(檀香山) 我希望上述字符串的答案如下: -05:00 -06:00 -10:00 我有一个正则表达式[^0-9-:+],它给出了第一个和第二个示例所需的答案,但第三个示例的结果是-10:00- 请帮助我构建所需的正则表达式以获取偏移量。请尝试正则表达式[+-]?\s?\d{2}:\d{2}以匹配可选符号和两
GMT-05:00东部时间(多伦多)
(格林尼治标准时间-06:00)中部时间(美国、加拿大)
GMT-10:00夏威夷-阿留申标准时间(檀香山)
-05:00
-06:00
-10:00
[^0-9-:+]
,它给出了第一个和第二个示例所需的答案,但第三个示例的结果是-10:00-
请帮助我构建所需的正则表达式以获取偏移量。请尝试正则表达式
[+-]?\s?\d{2}:\d{2}
以匹配可选符号和两个十进制序列
此正则表达式将获得预期结果:
[\+\124;-]?\ s*\d+:\d+
此外,它还考虑了可能的空白
您可以使用
\bGMT\s*([-+]?)\s*(\d+:\d+)
看。详情:
-一个完整的单词\bGMT
GMT
-0+空格\s*
-第1组:可选的([-+]?)
或-
+
-0+空格\s*
-1+位,(\d+:\d+
,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}");
}
}
请参阅,输出:
Javascript?C#?Qt?你用的是哪种语言?我用的是c#@TotoDo这些字符串遵循某种模式吗?或者只是用户输入的“随机”和不可预测?与第二个不匹配,因为在06@Greedo哦,它是团体的一部分。。。Lol.fixed使用这个正则表达式,我以期望的方式获得第一个和第三个正则表达式的输出!但是第二次是06:00,你应该用[]而不是()。。()表示组->
[+-]?\s*\d+:\d+
它应该是\d
,而不是d
。另外,+
不需要转义右侧,已在链接中更正,但未在答案中更正
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