我需要解析一个字符串,并在每个Guid值周围添加单引号。我想我可以用一个正则表达式来做这件事,但我不是一个正则表达式大师。
是否有一个好的Regex来识别一个Guid?
我的第二个问题是,一旦我找到了一个有效的正则表达式,我假设我会使用Regex.Replace(String, String, MatchEvaluator)
,但我不太确定语法。可能是这样的:
return Regex.Replace(stringToFindMatch, GuidRegex, match =>
{
return string.Format("'{0}'", match.Groups[0].ToString());
});
我试图解析的字符串可能看起来像这样:
“选择passwordco0_.PASSWord_CONFIG_ID作为PASSWord1_46_0_,FROM PASSWORD_CONFIG passwordco 0_ WHERE passwordco0_.PASSWord_CONFIG_ID= baf 04077-a3 c 0 - 454 b-ac 6 f-9 fec 00 b8 e170;@p0 = baf 04077-a3 c 0 - 454 b-ac 6 f-9 fec 00 b8 e170 [类型:指南(0)]”
7条答案
按热度按时间i34xakig1#
这一个是相当简单的,并不需要一个代表,因为你说。
这与以下样式匹配,这些样式都是GUID的等效且可接受的格式。
更新1
@NonStatic在评论中指出,上面的正则表达式将匹配具有错误结束分隔符的误报。
这可以通过广泛支持的正则表达式条件来避免。
JGsoft引擎、Perl、PCRE、Python和.NET框架都支持条件。Ruby从2.0版本开始支持它们。具有基于PCRE的正则表达式特性的语言(如 Delphi 、PHP和R)也支持条件。(来源http://www.regular-expressions.info/conditional.html)
后面的正则表达式将匹配
而且不会匹配
Regex:
解决方案被简化为只匹配数字,以便在需要时以更清晰的方式显示所需的内容。
xienkqul2#
最基本的正则表达式如下:
或者你可以paste it here。
希望这能节省你一些时间。
m0rkklqb3#
对于C# .Net查找和替换给定文本中的任何guid字符串,
使用此RegEx:
示例C#代码:
的确有效!它匹配并替换了以下样式,这些样式对于GUID来说都是等效的和可接受的格式。
eit6fx6z4#
在.NET Framework 4中有增强的System.Guid结构,其中包括新的TryParse和TryParseExact方法来解析GUID。这里有一个例子。
在这个例子中,我们创建了一个新的guid对象,并使用了一个具有无效guid的字符串变量。之后,我们使用TryParse方法来验证这两个变量是否具有有效的guid格式。通过运行示例,您可以看到字符串变量没有有效的guid格式,并且它给出了“InValid guid”的消息。如果字符串变量具有有效的guid,则这将在TryParse方法中返回true。
sirbozc55#
您可以使用以下命令轻松地自动生成C#代码:http://regexhero.net/tester/。
免费的。
我是这样做的:
然后,网站自动生成.NET代码:
wpx232ag6#
我使用更简单的正则表达式模式
au9on6nz7#
要简单地将GUID与连字符匹配,如下所示:
63F0DA57-5AA2-4271-B9DE-6FD68008EA98
aa76ae52-14f2-5774-A645-9d002a72dec1
我使用以下方法: