python 学习笔记(5)用户自定义类正则表达式
2013-05-08 11:10
721 查看
声明:本文系本人学习python3总结,如有侵权等,请及时告知;
欢迎转载:请保留http://blog.csdn.net/kevinx_xu/article/details/8899263一、用户自定义类
1.定义一个类
>>>class c_name:... def __init__ (self, arg1,arg2):
... self.val1 = arg1
... self.val2 = arg2
... def fun1(self):
... return self.val1
... def fun2(self):
... return self.val2
...
>>>c1 = c_name(100,200)
>>>c2 = c_name(1,2)
>>>c1.fun1()
100
>>>c2.fun2()
2如上,定义一个类,这个类使用时需要传递两个参数,__init__相当与C++中的构造函数,self相当与c++的this指针;
定义一个类后,使用是直接新建一个对象,类似C++中的调用new去调用构造函数,构造完成后,就有了这个类的属性,fun1, fun2
二、正则表达式
所有的现代编程语言都有内建字符串处理函数。在python里查找,替换字符串的方法是:index()、 find()、split()、 count()、 replace()等。但这些方法都只是最简单的字符串处理。比如:用index()方法查找单个子字符串,而且查找总是区分大小写的。为了使用不区分大小写的查找,可以使用s.lower()或者s.upper(),但要确认你查找的字符串的大小写是匹配的。replace() 和split() 方法有相同的限制。
正则表达式有强大并且标准化的方法来处理字符串查找、替换以及用复杂模式来解析文本。正则表达式的语法比我们的程序代码更紧凑,格式更严格,比用组合调用字符串处理函数的方法更具有可读性。甚至你可以在正则表达式中嵌入注释信息。
1.导入正则表达式
importre^ 匹配字符串开始.
$ 匹配字符串结尾
? 表示匹配是可选的
\b 在\b右边必须有一个分隔符
\d 匹配所有0‐9的数字.
\D 匹配除了数字外的所有字符.
+的意思是一个或多个。
字符串的前面添加一个字符‘r’,在处理正则表达式的时候总是使
用原始字符串。
注意,如果要使用松散正则表达式,需要传递一个叫re.VERBOSE的参数
1)为了在正则表达式中表达这个独立的词,你可以使用‘\b’。它的意思是“在\b右边必须有一个分隔符”。在python中,比较复杂的是‘\’字符必须被转义,这有的时候会导致‘\’字符传染(想想可能还要对\字符做转义的情况)。
2) 为了解决‘\’字符传染的问题,可以使用原始字符串。这只需要在字符串的前面添加一个字符‘r’。它告诉python,字符串中没有任何字符需要转义。‘\t’是一个制表符,但r‘\t’只是一个字符‘\’紧跟着一个字符t。我建议在处理正则表达式的时候总是使
用原始字符串。否则,会因为理解正则表达式而消耗大量时间.
2、罗马数字的规则
在罗马数字中,有七个不同的数字可以以不同的方式结合起来表示其他数字。
• I = 1
• V = 5
• X = 10
• L = 50
• C = 100
• D = 500
• M = 1000
• 大部分时候用字符相叠加来表示数字。I是1, II是2, III是3。VI是6(挨个看来,是“5 和 1”的组合),VII是7,VIII是8。
• 含有10的字符(I,X,C和M)最多可以重复出现三个。为了表示4,必须用同一位数的下一个更大的数字5来减去一。不能用IIII
来表示4,而应该是IV(意思是比5小1)。40写做XL(比50小10),41写做
XLI,42写做XLII,43写做 XLIII,44写做XLIV(比50小10
并且比5小 1)。
3、查找
re.search(pattern, string, flags=0)?表示可选的参数
pattern模式,eg:a?a?a?
string要查找的字符串
(A|B|C)的意思是“只匹配A,B或者C中的一个”。
4、松散正则表达式
flags = re.VERBOSE将flags标志为松散正则表达式
松散正字表达式和普通紧凑的正则表达式有两点不同:
• 空白符被忽略。空格、制表符和回车在正则表达式中并不会匹配空格、制表符、回车。如果你想在正则表达式中匹配他们,可以在前面加一个\来转义。
• 注释信息被忽略。松散正字表达式中的注释和python代码中的一样,都是以#开头直到行尾。它可以在多行正则表达式中增加注释信息,这就避免了在python代码中的多行注释。他们的工作方式是一样的。
• 正则表达式中的空白符,他们都会被忽略掉了。还有一些注释信息,当然也被正则表达式忽略掉。
注意,如果要使用松散正则表达式,需要传递一个叫re.VERBOSE的参数
5、数字匹配
\d 匹配所有0‐9的数字. \D 匹配除了数字外的所有字符.\d{3}表示什么意思?\d表示任意的数字(0
到9),{3}表示一定要匹配3个数字。
re.compile(pattern, flags=0)
Compile a regular expression pattern, returning a pattern object.
pattern 正则表达式的式子
eg:
>>>test_pattern = re.compile('^(\d{3})-(\d{3})-(\d{4})$')
>>>test_pattern.search('123-456-7777').groups()
('123','456', '7777')
>>>
注意:(\d)将匹配到的字符分成一个元组;
6、字符匹配
\D匹配除了数字以外的任意字符,+的意思是一个或多个。>>>test_pattern = re.compile('^(\d+)\D+(\d+)\D+(\d+)$')
>>>test_pattern.search('123 234 23141').groups()
('123','234', '23141')
>>>test_pattern.search('12113 2234 233141').groups()
('12113','2234', '233141')
>>>test_pattern.search('12113 === 2234 ===233141').groups()
('12113','2234', '233141')
>>>
*的意思是0到多个
>>>test_pattern = re.compile(r'^\D*(\d{3})\D*(\d{3})\D*(\d{4})$')
>>>test_pattern.search('12113 === 2234 ===233141').groups()
Traceback(most recent call last):
File "<stdin>", line 1, in<module>
AttributeError:'NoneType' object has no attribute 'groups'
>>>test_pattern.search('121 222 2331').groups()
('121','222', '2331')
>>>test_pattern.search('xxx121 222 2331').groups()
('121','222', '2331')
>>>test_pattern.search('xxx121ghkhk 222 2331').groups()
('121','222', '2331')
如果使用松散的正则表达式
需要在re.compile("pattern", re.VERBOSE)
总结
• ^ 匹配字符串开始位置。• $ 匹配字符串结束位置。
• \b 匹配一个单词边界。
• \d 匹配一个数字。
• \D 匹配一个任意的非数字字符。
• x? 匹配可选的x字符。换句话说,就是0个或者1个x字
符。
• x* 匹配0个或更多的x。
• x+ 匹配1个或者更多x。
• x{n,m} 匹配n到m个x,至少n个,不能超过m个。
• (a|b|c) 匹配单独的任意一个a或者
b或者c。
• (x) 这是一个组,它会记忆它匹配到的字符串。你可以用
re.search返回的匹配对象的groups()函数来获取到匹配的值。
相关文章推荐
- Python学习笔记 - 正则表达式
- Python学习笔记(四)——模式匹配与正则表达式
- Python学习笔记6-Python中re(正则表达式)模块学习
- python基础学习笔记(三) 文件、time和正则表达式
- Python学习笔记013_正则表达式
- Python学习笔记九:正则表达式
- 【学习笔记】Python正则表达式
- 【学习笔记】Python中的正则表达式re
- Python学习笔记6-Python中re(正则表达式)模块学习
- python学习笔记(五)文件操作、正则表达式
- Python 【正则表达式】 学习笔记
- Python学习笔记57(正则表达式)
- Python 学习笔记 - 正则表达式模块
- 37 Python 正则表达式学习笔记
- python学习笔记(五)正则表达式的基本语法和re模块API
- 基于python的正则表达式学习笔记
- 【Python】学习笔记——-12、正则表达式
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
- python爬虫之正则表达式学习笔记一
- Python 爬虫学习笔记之正则表达式