正则表达式
正则表达式接触过好多次,以前用C写代码的时候对文本的处理不多,基本没怎么用过。工作了以后对于正则表达式才逐步的用了起来。但是到目前为止,公司里面不少同事对于正则表达式具体怎么用的还是不清楚,也挺让人无奈的。
我好好研究正则表达式是在出差的时候学会的,当时有个数据配置的规则,一线和家里的数据匹配方式正好是反过来的,使用的字符也不一样。当时实在是没办法了,把资料搬出来,结合百度,然后好好学习了下,算是知道怎么用了。
这里推荐notepad++这个编辑器,里面的正则表达式查找功能用来练习正则表达式实在是太棒了。
NOTEPAD++的搜索功能中带有正则表达式匹配,可以查找替换,筛选。还是挺不错的。
1 匹配单行记录
^.+$ 解析:^用来匹配行首, "."可以匹配除了换行的任意字符,"+"表示匹配前面字符1个或无限个,"$"表示行尾,轻松搞定。
2 Python中的正则表达式使用
Python中自带的re模块还是挺好用的,结合使用经验,目前看findall函数是相对通用的函数,能够将指定字符串中所有的记录都摘选出来放到一个数组中。
1 >>> regex_list1 = re.compile ( r'\baaa\b' ) 2 >>> 3 >>> tmp_string = 'aaa 1234aaa2342 bacaaa' 4 >>> 5 >>> print regex_list1.findall ( tmp_string ) 6 ['aaa'] 7 >>> regex_list1 = re.compile ( r'[1-9]{3}aaa[1-9]{2}' ) 8 >>> print regex_list1.findall ( tmp_string ) 9 ['234aaa23']
先定义一个正则表达式的字符串,咋设计根据自己的需求实现。
然后调用re.compile()函数对这个字符串进行编译,函数的返回结果就是一个正则表达式的对象。
然后就可以通过这个正则表达式对象的功能函数findall对字符串进行匹配和过滤。
匹配效果如上图所示。用起来还是很简单的,只要能设计正确的正则表达式即可。