首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取偏移量c#的Regex

获取偏移量c#的Regex
EN

Stack Overflow用户
提问于 2020-08-18 10:07:15
回答 3查看 88关注 0票数 3

我有一个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

我有一个regex [^0-9-:+],它为第一个和第二个示例提供了所需的答案,但是对于第三个示例,它的结果是-10:00-

请帮助我建立一个所需的Regex来获取偏移量。

EN

回答 3

Stack Overflow用户

发布于 2020-08-18 10:11:51

尝试regex [+-]?\s?\d{2}:\d{2}匹配可选符号,然后匹配两个十进制序列。

示例

票数 2
EN

Stack Overflow用户

发布于 2020-08-18 10:49:29

你可以用

代码语言:javascript
复制
\bGMT\s*([-+]?)\s*(\d+:\d+)

regex演示。详细信息:

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

然后,您需要将两个组连接起来才能得到最终值:

代码语言:javascript
复制
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#演示,输出:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-08-18 10:18:26

这个正则表达式将得到预期的结果:

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

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

示例

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63466388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档