使用正则表达式过滤掉字符串中的guid

时间:2012-03-21 10:10:59

标签: regex vb.net guid

我正在使用某个正则表达式来知道字符串中某个字符串值的位置:

正则表达式:C\[([A-Z][0-9])\]
字符串:=C[C3]+(C[C3]-C[C5])*(C[C3]-(C[C5]+C[C3]))

这会从该字符串中获取每个C[blabla]值,当我要求组(1)时,我甚至不必在开头剪切“C[”并且“{ {1}}“最后。

现在我想这样做但不是使用]占位符,而是使用C[],而不是在该占位符中使用“G[]”字符串,而是使用guid所以我得到了这些:

正则表达式:C3
字符串:G\[[{|\(]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[\)|}]?\]

当我检查正则表达式时,它完全匹配guid,但是当我使用的不仅仅是一个guid时(或者当我在之前或之后添加字符时),我没有得到任何匹配。我省略了“^ $”因此它不再定义开始和结束,但这似乎不是问题。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

由于您没有指定您正在使用的语言,我使用Java制作了解决方案:

String regex = "Guid\\[([0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})\\]";
String input = "=Guid[92716d13-01d1-447b-be3f-c090fed6336c]+Guid[92716d13-01d1-447b-be3f-c090fed6336c]";

Matcher m = Pattern.compile(regex).matcher(input);
while(m.find()) {
    System.out.println(m.group(1));
}

打印:

92716d13-01d1-447b-be3f-c090fed6336c
92716d13-01d1-447b-be3f-c090fed6336c

答案 1 :(得分:0)

我试过你的网站。

我说:

Guid\[[{|\(]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[\)|}]?\]

作为正则表达式

并且:

Guid[92716d13-01d1-447b-be3f-c090fed6336c]+Guid[92716d13-01d1-447b-be3f-c090fed6336d]
输入1 中的

我在群组[0]中得到2个结果:

Guid[92716d13-01d1-447b-be3f-c090fed6336c]

Guid[92716d13-01d1-447b-be3f-c090fed6336d]