import.re
re.compile()
.search
学爬虫第二周就接触了正则表达式,这么非人的表达也不知道是谁发明的...但是既然国际通行,哭着喊着也要学啊。
《Python核心编程》第三版的第一章(!)就是正则表达式(不是第一版也不是第二版,它们三本完全不是兄弟的感觉,除了封面类似...),讲解也算透彻,还有练习题。所以我把练习题做一下,虽然看书还算顺利,练习就完全不一样啊。每一道题都做得吭哧吭哧的。
第一章
1. 识别后续的字符串:“bat”、“bit”、“but”(以下略)
这个用“|”分隔就好了
import re
ma= re.findall(r'bat|bit|but','butter and battle and bitter')
print(ma)
疑问:用findall的时候,要输出ma.group就会报错,求指教...
2. 匹配由单个空格分隔的任意单词对,也就是姓和名
ma= re.match(r'[A-Z]{1}[a-z]*\s[A-Z]{1}[a-z]*','Tom Jerry')
print(ma.group())
空间有限,错误的尝试我就不贴了,尽管我有很多案例哈哈
3. 匹配由单个逗号和单个空白符分隔的任何单词和单个字母,如姓氏的首字母
这里不太明白什么叫空白符,null也不会出现在名字里啊,还是用空格继续吧
这个遇到一个坑,就是[A-Z]后面少了个“.”
ma= re.match(r'[A-Z].+(,|\s)','Tom,Jerry')
print(ma.group())
4. 匹配所有有效Python标识符的集合
ma= re.match(r'.+','Tom+?')
print(ma.group())
5. 匹配街道地址(这题太复杂,略过)
6. 匹配以“www”起始且以“.com”结尾的简单域名
7. 匹配所有能够表示Python整数的字符串集
这里我用12试就可以,改成12.5就会报错。如果正则改为(r'(\d+[.\d]$)'也会报错,不知道为什么。
ma= re.match(r'(^\d+[^\.]$)','12')
print(ma.group())
8. 匹配所有能够表示Python长整数的字符串集(抄来的)
patternIntStr = r'''
9. 匹配所有能够表示Python浮点数的字符串集
ma=re.match(r'\d+(\.\d*)?','3.88')
print(ma.group())
patternFloatStr = r'''