首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C# Regex指南

C# Regex指南
EN

Stack Overflow用户
提问于 2012-06-15 04:14:55
回答 6查看 145.5K关注 0票数 144

我需要解析一个字符串,并在每个Guid值两边添加单引号。我在想我可以使用Regex来做这件事,但我并不是Regex专家。

有没有好的正则表达式可以用来识别Guid?

我的第二个问题是,一旦我找到了一个有效的正则表达式,我假设我会使用Regex.Replace(String, String, MatchEvaluator),但是我不太确定它的语法。可能是这样的:

代码语言:javascript
复制
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)"

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-06-15 04:37:36

这个非常简单,不需要你说的委托。

代码语言:javascript
复制
resultString = Regex.Replace(subjectString, 
     @"(?im)^[{(]?[0-9A-F]{8}[-]?(?:[0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$", 
     "'$0'");

这与以下样式相匹配,这些样式都是GUID的等效且可接受的格式。

代码语言:javascript
复制
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)

后面的正则表达式将匹配

代码语言:javascript
复制
{123}
(123)
123

并且将不匹配

代码语言:javascript
复制
{123)
(123}
{123
(123
123}
123)

正则表达式:

代码语言:javascript
复制
^({)?(\()?\d+(?(1)})(?(2)\))$

解决方案被简化为只匹配数字,以更清晰的方式显示需要的内容。

票数 214
EN

Stack Overflow用户

发布于 2016-02-26 17:42:44

最基本的正则表达式如下:

代码语言:javascript
复制
(^([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

希望这能节省你的时间。

票数 56
EN

Stack Overflow用户

发布于 2018-04-12 10:23:06

为了让C# .Net从给定文本中查找和替换任何guid查找字符串,

使用此RegEx:

代码语言:javascript
复制
[({]?[a-fA-F0-9]{8}[-]?([a-fA-F0-9]{4}[-]?){3}[a-fA-F0-9]{12}[})]?

示例C#代码:

代码语言:javascript
复制
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来说都是等效的和可接受的格式。

代码语言:javascript
复制
"aa761232bd4211cfaacd00aa0057b243" 
"AA761232-BD42-11CF-AACD-00AA0057B243" 
"{AA761232-BD42-11CF-AACD-00AA0057B243}" 
"(AA761232-BD42-11CF-AACD-00AA0057B243)" 
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11040707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档