C#正则expression式Guid
我需要parsing一个string并在每个Guid值周围添加单引号。 我想我可以使用正则expression式来做到这一点,但我不完全是一个正则expression式的大师。
有一个很好的正则expression式来识别Guid吗?
我的第二个问题是,一旦我find了一个有效的正则expression式我假设我会使用Regex.Replace(String, String, MatchEvaluator)
但我不太确定的语法。 也许是这样的:
return Regex.Replace(stringToFindMatch, GuidRegex, match => { return string.Format("'{0}'", match.Groups[0].ToString()); });
我试图parsing的string可能如下所示:
“SELECT passwordco0_.PASSWORD_CONFIG_ID as PASSWORD1_46_0_,FROM PASSWORD_CONFIG passwordco0_ WHERE passwordco0_.PASSWORD_CONFIG_ID = baf04077-a3c0-454b-ac6f-9fec00b8e170; @ p0 = baf04077-a3c0-454b-ac6f-9fec00b8e170 [Type:Guid(0)]”
这一个很简单,不需要你说的代表。
resultString = Regex.Replace(subjectString, @"^[{(]?[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$", "'$0'", RegexOptions.IgnoreCase);
这匹配以下样式,这些样式对于GUID都是等同的和可接受的格式。
"ca761232ed4211cebacd00aa0057b223" "CA761232-ED42-11CE-BACD-00AA0057B223" "{CA761232-ED42-11CE-BACD-00AA0057B223}" "(CA761232-ED42-11CE-BACD-00AA0057B223)"
更新1
@NonStatic在注释中指出上述正则expression式将匹配错误的结束分隔符的错误肯定。
这可以通过广泛支持的正则expression式来避免。
JGsoft引擎支持条件,Perl,PCRE,Python和.NET框架。 Ruby从版本2.0开始支持它们。 Delphi,PHP和R等基于PCRE的正则expression式语言也支持条件语言。 (来源http://www.regular-expressions.info/conditional.html )
下面的正则expression式匹配
{123} (123) 123
和不匹配
{123) (123} {123 (123 123} 123)
正则expression式:
^({)?(\()?\d+(?(1)})(?(2)\))$
解决scheme被简化为仅匹配数字,以更清楚的方式显示如果需要的话。
最基本的正则expression式如下:
(^([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})$)
或者你可以把它粘贴在这里 。
希望这可以为你节省一些时间。
您可以使用以下链接轻松自动生成C#代码: http : //regexhero.net/tester/ 。
免费。
我是这样做的:
网站然后自动生成.NET代码:
string strRegex = @"\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}\b"; Regex myRegex = new Regex(strRegex, RegexOptions.None); string strTargetString = @" {CD73FAD2-E226-4715-B6FA-14EDF0764162}.Debug|x64.ActiveCfg = Debug|x64"; string strReplace = @"""$0"""; return myRegex.Replace(strTargetString, strReplace);
在.NET Framework 4中,增强了System.Guid结构,其中包括新的TryParse和TryParseExact方法来parsingGUID。 这是一个例子。
//Generate New GUID Guid objGuid = Guid.NewGuid(); //Take invalid guid format string strGUID = "aaa-aaaa"; Guid newGuid; if (Guid.TryParse(objGuid.ToString(), out newGuid) == true) { Response.Write(string.Format("<br/>{0} is Valid GUID.", objGuid.ToString())); } else { Response.Write(string.Format("<br/>{0} is InValid GUID.", objGuid.ToString())); } Guid newTmpGuid; if (Guid.TryParse(strGUID, out newTmpGuid) == true) { Response.Write(string.Format("<br/>{0} is Valid GUID.", strGUID)); } else { Response.Write(string.Format("<br/>{0} is InValid GUID.", strGUID)); }
在这个例子中,我们创build了一个新的guid对象,并且还带有一个具有无效guid的stringvariables。 之后,我们使用TryParse方法来validation这两个variables是否有有效的GUID格式。 通过运行示例,您可以看到该stringvariables没有有效的guid格式,并提供“InValid guid”消息。 如果stringvariables具有有效的GUID,则将在TryParse方法中返回true。