如何使用正则表达式处理字符串中的GUID

GUID格式:

由三十二位数字和字母组成。

{8-4-4-4-12}

匹配表达式: \{[A-F0-9]{8}(-[A-F0-9]{4}){3}-[A-F0-9]{12}\}

问题:

假设存在一个这样的字符串

administrator登录窗口{C0869370-70BF-4408-A8CF-72A77BB1D788}第一次登陆{7618B0B2-D5A4-43b1-9055-65E744ACB044}<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

已知2GUID,那么如何严格匹配整串字符呢?

匹配单个GUID >>> (\{C0869370-70BF-4408-A8CF-72A77BB1D788\})

匹配多个GUID >>> (.*?)(\{C0869370-70BF-4408-A8CF-72A77BB1D788\})(.*?)(\{7618B0B2-D5A4-43b1-9055-65E744ACB044\})  (1)

(.*?)的意义是匹配任意个字符任意次,并且该表达式执行最多一次。

改进:

当字符串出现变化时,(1)式就不能得到正确的匹配结果。如:

administrator登录窗口{{C0869370-70BF-4408-A8CF-72A77BB1D788}}第一次登陆{7618B0B2-D5A4-43b1-9055-65E744ACB044}成功{BCBBCE51-340E-434e-9CCB-0B8FAA020626}

那么需要修改为(.*?)(\{C0869370-70BF-4408-A8CF-72A77BB1D788\})(.*?)(\{7618B0B2-D5A4-43b1-9055-65E744ACB044\})(2)

$的意义为必须以该表达式结束。

总结:

对于字符串出现任意个GUID匹配模式:(.*?)(\{GUID\})一个或多个表达式$

缺陷:

对在前面出现其他的GUID字符串还没办法处理。如:

提示{BCBBCE51-340E-434e-9CCB-0B8FAA020626}administrator登录窗口{{C0869370-70BF-4408-A8CF-72A77BB1D788}}第一次登陆{7618B0B2-D5A4-43b1-9055-65E744ACB044}

注:
C#对正则匹配时默认是区分大小写的,所以上面的正则表达式要改为\{[A-Fa-f0-9]{8}(-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}\}
或是设置为RegexOptions.IgnoreCase。

转载于:https://www.cnblogs.com/moonz-wu/archive/2008/03/03/1089139.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值