我有一个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我有一个regex [^0-9-:+],它为第一个和第二个示例提供了所需的答案,但是对于第三个示例,它的结果是-10:00-。
请帮助我建立一个所需的Regex来获取偏移量。
发布于 2020-08-18 10:11:51
尝试regex [+-]?\s?\d{2}:\d{2}匹配可选符号,然后匹配两个十进制序列。
发布于 2020-08-18 10:49:29
你可以用
\bGMT\s*([-+]?)\s*(\d+:\d+)见regex演示。详细信息:
\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#演示,输出:
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发布于 2020-08-18 10:18:26
https://stackoverflow.com/questions/63466388
复制相似问题