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

正则表达式获取偏移量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}以匹配可选符号和两

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

  • 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
    • \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}");
        }
    }
    
    请参阅,输出:


    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