我需要解析一个字符串,并在每个Guid值两边添加单引号。我在想我可以使用Regex来做这件事,但我并不是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__,从passwordco0_.PASSWORD_CONFIG_ID=baf04077-a3c0-454b-ac6f-9fec00b8e170;所在的PASSWORD_CONFIG passwordco0_@p0 =baf04077-a3c0-454b-ac6f-9fe00b8e170类型: Guid (0)"
发布于 2012-06-15 04:37:36
这个非常简单,不需要你说的委托。
resultString = Regex.Replace(subjectString,
@"(?im)^[{(]?[0-9A-F]{8}[-]?(?:[0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$",
"'$0'");
这与以下样式相匹配,这些样式都是GUID的等效且可接受的格式。
ca761232ed4211cebacd00aa0057b223
CA761232-ED42-11CE-BACD-00AA0057B223
{CA761232-ED42-11CE-BACD-00AA0057B223}
(CA761232-ED42-11CE-BACD-00AA0057B223)
更新1
@NonStatic在评论中指出,上面的正则表达式将匹配具有错误结束分隔符的误报。
这可以通过广泛支持的正则表达式条件来避免。
JGsoft引擎、Perl、PCRE、Python和.NET框架都支持条件语句。Ruby从2.0版开始就支持它们。Delphi、PHP和R等具有基于PCRE的regex特性的语言也支持条件。(源http://www.regular-expressions.info/conditional.html)
后面的正则表达式将匹配
{123}
(123)
123
并且将不匹配
{123)
(123}
{123
(123
123}
123)
正则表达式:
^({)?(\()?\d+(?(1)})(?(2)\))$
解决方案被简化为只匹配数字,以更清晰的方式显示需要的内容。
发布于 2016-02-26 17:42:44
最基本的正则表达式如下:
(^([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})$)
或者你可以使用paste it here。
希望这能节省你的时间。
发布于 2018-04-12 10:23:06
为了让C# .Net从给定文本中查找和替换任何guid查找字符串,
使用此RegEx:
[({]?[a-fA-F0-9]{8}[-]?([a-fA-F0-9]{4}[-]?){3}[a-fA-F0-9]{12}[})]?
示例C#代码:
var result = Regex.Replace(
source,
@"[({]?[a-fA-F0-9]{8}[-]?([a-fA-F0-9]{4}[-]?){3}[a-fA-F0-9]{12}[})]?",
@"${ __UUID}",
RegexOptions.IgnoreCase
);
当然有效!并且它匹配并替换以下样式,这些样式对于GUID来说都是等效的和可接受的格式。
"aa761232bd4211cfaacd00aa0057b243"
"AA761232-BD42-11CF-AACD-00AA0057B243"
"{AA761232-BD42-11CF-AACD-00AA0057B243}"
"(AA761232-BD42-11CF-AACD-00AA0057B243)"
https://stackoverflow.com/questions/11040707
复制相似问题