我正在寻找一种在.NET可识别模式的字符串中查找Guid的方法。
此popular library中提供了一些正则表达式,但我找不到适用于此MSDN article中此处列出的所有可能指南的正则表达式。
例如,假设我有一个这样的字符串:
ACTIVITY:“{0xCA761232,0xED42,0x11CE,{0xBA,0xCD,0x00,0xAA,0x00,0x57,0xB2,0x23}}”,时间:09:09:09:09
这应该返回:
{0xCA761232,0xED42,0x11CE,{0xBA,0xCD,0x00,0xAA,0x00,0x57,0xB2,0x23}}
另一个例子可能是:
随机字符串CA761232-ED42-11CE-BACD-00AA0057B223随机字符串
这应该返回:
CA761232-ED42-11CE-BACD-00AA0057B223
有关如何处理此问题的任何想法?正则表达式是否可以到达这里?
答案 0 :(得分:3)
解决方案是:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Random string CA761232-ED42-11CE-BACD-00AA0057B223 random string";
Match match = Regex.Match(input,
@"((?:(?:\s*\{*\s*(?:0x[\dA-F]+)\}*\,?)+)|(?<![a-f\d])[a-f\d]{32}(?![a-f\d])|" +
@"(?:\{\(|)(?<![A-F\d])[A-F\d]{8}(?:\-[A-F\d]{4}){3}\-[A-F\d]{12}(?![A-F\d])(?:\}|\)|))");
if (match.Success)
{
string key = match.Groups[1].Value;
Console.WriteLine(key);
}
else
{
Console.WriteLine("NO MATCH");
}
}
}
查看并测试此代码here。
答案 1 :(得分:0)
试试这个正则表达式:
(\{0x[0-9A-F]{8}, 0x[0-9A-F]{4}, 0x[0-9A-F]{4}, \{(?:0x[0-9A-F]{2}, ){7}0x[0-9A-F]{2}\}\})
证明: