正则表达式快速使用入门

前端之家收集整理的这篇文章主要介绍了正则表达式快速使用入门前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

昨天临时接到一个需求,要将所有.sql和.tcl里面的表名全部截取出来,并输出excel。

首先做的分析,就是sql文件里面,表名都存在什么结构下。最终定义 from 后和join 后。 但是,还存在子查询和结果子集的情况。

就是说,有可能from 和join后面跟的是一个(select * from...)的结构。

考虑了下,用逻辑去匹配并输出可能比较麻烦。 于是,技术选择了正则 。 但是又好久不用了,基本都还给书本了。就在网上狂找资料...

在历经了七七四十九分钟后,终于把正则熬出来了。

string regexText = "((\\bfrom\\b)|(\\bjoin\\b))(\\s+\\w+\\.?\\w+)\\s+\\b";

之前有几个变种版本,有一个是这个最终版的2倍多的长度.... 不过那个也基本可以实现需求。这里就不晒了。

背景介绍完了,下面切入正题:

目标字符串 string text="begin this is C# hello world this is JAVA hello world this is PYTHON hello world this is C++ hello world this is PHP hello world this is over!"

需求,匹配所有编程语言:

stringregText = "\\bis\\b\\s+\\w+\\W*\\s+\\bhello\\b";

Regex reg = new Regex(regText);
MatchCollection matchList = reg.Matches(text,0);
foreach (Match match in matchList)
{
Console.WriteLine(match.Value.Replace("is","").Replace("hello","").Trim());
}
Console.Read();

下面对这小段代码进行一个讲解:

首先解析下regText,\\bis\\b的意思是匹配is这个单次,当然这里面is可以替换为非符号、空格、换行的任意字母,都会作为一个固定单次来处理。 如果匹配符号,就是\\B?\\B,相当于把小b给大写了。 这个窍门可以广泛运用,比如\\w \\W \\d \\D \\s \\S 。 相当于都是反义。 所以只需要记住常用的小写代表什么就可以了。

\\s 的意思是代表 空格,后面跟+代表1~n个空格,跟*代表0~n个空格,跟?代表0~1个空格。 也可以跟{2}代表匹配2个空格,或者跟{1,3}代表匹配1~3个空格

好了,这样就可以看出regText的意思了吧, 找到text字符串中所有在is+一到多个空格+一到多个字符+零到多个符号+一到多个空格后面+hello。 这样就可以根据Is 开头, hello结尾的特性将需要的数据提出来了。

由于时间关系,就写这么多吧。 最后送大家两个网址,如果你想系统学习下,可以看一下。

http://www.wangqi.com/n9250c53.aspx 这里面可以找到正则里面的所有语法。

http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html 这个楼主很赞,对正则各个语法的分析很到位。楼猪一些不懂的也是从这里看到的~

有兴趣的可以分析下

string regexText = "((\\bfrom\\b)|(\\bjoin\\b))(\\s+\\w+\\.?\\w+)\\s+\\b"; 这个正则式子,如果能写出类似的,那么基本上正则高中毕业了。

原文链接:https://www.f2er.com/regex/362968.html

猜你在找的正则表达式相关文章