段宏

导航

使用正则表达式

  今天在项目中处理多字段搜索的问题时,需要从用户输入结果中提取字段名称和字段值,使用了下正则表达式,果然很强大:不仅验证了输的格式,还能根据模式中设置的分组提取字段值:

  先写个单元测试验证下:

  1.验证输入格式

  View Code
 1 [Fact]
 2         public void RegexTest6()
 3         {
 4             var pattern = "^\\[(\\w+)[:]{1}(\\S+)\\]$";
 5             string test = "[hello:world]";
 6             string test1 = "[,:123]";
 7             string test2 = "123:23";
 8             string test3 = "123:world]";
 9             string test4 = "[hello:123";
10             string test5 = "[1231]";
11 
12             Regex.IsMatch(test, pattern).ShouldBe(true);
13             Regex.IsMatch(test1, pattern).ShouldBe(false);
14             Regex.IsMatch(test2, pattern).ShouldBe(false);
15             Regex.IsMatch(test3, pattern).ShouldBe(false);
16             Regex.IsMatch(test4, pattern).ShouldBe(false);
17             Regex.IsMatch(test5, pattern).ShouldBe(false);
18         }

  2.根据指定的分组格式提取字段值

  View Code
 1 [Fact]
 2         public void RegexTest7()
 3         {
 4             var pattern = "^\\[(?<field>\\w+)[:]{1}(?<value>\\S+)\\]$";
 5 
 6             var test1 = "[hello:world]";
 7 
 8             Regex regex = new Regex(pattern);
 9             Regex.IsMatch(test1, pattern).ShouldBe(true);
10 
11             var matches = regex.Match(test1);
12             matches.Groups["field"].Value.ShouldBe("hello");
13             matches.Groups["value"].Value.ShouldBe("world");
14         }

  总结:和字符串的解析比起来,正则表达式 真的很强大。处理字符串时记得用正则~

posted on 2013-01-16 23:57  段宏  阅读(950)  评论(0编辑  收藏  举报