我需要使用Regex
string findGuid="hi sdkfj 1481de3f-281e-9902-f98b-31e9e422431f sdfsf 1481de3f-281e-9902-f98b-31e9e422431f"
var guid = Regex.Match(m.HtmlBody.TextData, @"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$").Value;
答案 0 :(得分:9)
如果您想使用Regex
模式获取GUID。然后,尝试这种模式
(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}
示例强>
string findGuid = "hi sdkfj 1481de3f-281e-9902-f98b-31e9e422431f sdfsf 1481de3f-281e-9902-f98b-31e9e422431f"; //Initialize a new string value
MatchCollection guids = Regex.Matches(findGuid, @"(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}"); //Match all substrings in findGuid
for (int i = 0; i < guids.Count; i++)
{
string Match = guids[i].Value; //Set Match to the value from the match
MessageBox.Show(Match); //Show the value in a messagebox (Not required)
}
注意:我使用了您提供的相同模式,但只删除了^
字符,表示表达式必须与字符串的开头匹配。然后,删除$
字符,表示表达式必须匹配字符串的结尾。
有关正则表达式的更多信息,请访问:
Regular Expressions - a Simple User Guide and Tutorial
谢谢, 我希望你觉得这很有帮助:)
答案 1 :(得分:7)
看起来您使用了不正确的正则表达式。 如果你需要guid
{8} - {4} - {4} - {4} - {12}
应该像
[0-9A-FA-F] {8} - [0-9A-FA-F] {4} - [0-9A-FA-F] {4} - [0-9A-FA-F ] {4} - [0-9A-FA-F] {12}
您可以尝试这种方式:
string findGuid="hi sdkfj 1481de3f-281e-9902-f98b-31e9e422431f sdfsf 1481de3f-281e-9902-f98b-31e9e422431f";
string regexp = @"[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}";
if (Regex.IsMatch(findGuid, regexp))
{
Console.WriteLine(
Regex.Match(findGuid, regexp).Value
);
}
答案 2 :(得分:1)
您可以在分割数组上使用Guid.TryParse。类似的东西:
string findGuid = "hi sdkfj 1481de3f-281e-9902-f98b-31e9e422431f sdfsf 1481de3f-281e-9902-f98b-31e9e422431f";
string[] splitArray = findGuid.Split();
List<Guid> listofGuid = new List<Guid>();
foreach (string str in splitArray)
{
Guid temp;
if (Guid.TryParse(str, out temp))
listofGuid.Add(temp);
}
这将为你提供Guid列表中的两个项目
编辑:根据OP的评论,新字符串
string findGuid="hi sdkfj x-Guid:1481de3f-281e-9902-f98b-31e9e422431f sdfsf x-Guid:1481de3f-281e-9902-f98b-31e9e422431f"
可以指定多个拆分分隔符,例如:
string[] splitArray = findGuid.Split(' ', ':');
答案 3 :(得分:1)
Pattern =“\ b [\ dA-F] {8} - [\ dA-F] {4} - [\ dA-F] {4} - [\ dA-F] {4} - [\ DA-F] {12} - \ d +“
string input = "name=4a3779ab-56cc-41b5-ac7c-03bbf673439c-53607.jpg This is input string";
Match m = Regex.Match(input, @"\b[\dA-F]{8}-[\dA-F]{4}-[\dA-F]{4}-[\dA-F]{4}-[\dA-F]{12}", RegexOptions.IgnoreCase);
string output = null;
if (m.Success)
output = m.Value;
答案 4 :(得分:0)
使用.NET 4.0及更高版本,您可以使用Guid.TryParse。这是我使用的扩展方法。
public static bool IsGuid(this string checkGuid)
{
if (string.IsNullOrEmpty(checkGuid)) return false;
Guid resultGuid;
return Guid.TryParse(checkGuid, out resultGuid);
}
以下是你如何称之为。
public MyMethod(string myToken)
{
if (myToken.IsGuid())
{
// Do something
}
}