正则表达式则为重点, 正则表达式(regular expression),主要功能是从字符串(String) 中通过特定的模式(pattern),搜索想要找到的内容.
语法
前边我们简介了字符串相关的处理函数,我们可以通过这些函数去实现简单的搜索功能,从而搜索想要的内容,
比如说从字符串"Hello World" 中搜索是否有"world"这一子字符串,其实我们有时候只是大概知道我们所搜索要找到的什么,而并不是说说明了我在找"world", 再给大家比如吧,我们想找到字符串中包含的数字,从0到9的任何一个.那么这些目标就可以写入正则表达式....
使用正则表达式需要标准库中的一个包re.
import re
z = re.search("[0-9]", "abcd4ef")
print(m.group(0))
[0-9]使我们所谓的正则表达式,re.search是接收两个参数,从字符串中得到我们所想到的[0-9]任意一个数字字符.
正则表达式的函数
z = re.search(pattern,string) -------------------> 搜索整个字符串,知道发现符合的子字符串
z = re.match(pattern,string) --------------------->从头开始检查是否符合正则表达式
上面这两个函数选择一个进行搜索,如果我们使用re.match( ) 的话,就会得到 None,因为字符串的开头则是"a",所以不符合语法中 "[0-9]" 的
要求的.
常用的正则表达式函数还有:
re.split( ) ------------------------>根据正则表达式分割字符串,将分割后的所有子字符串放在一个表中返回.
re.findAll( ) ------------------------->根据正则表达式搜索字符串,将所有符合的子字符串放在一个表中返回.
re.complie( )
写一个正则表达式
字符
X字符,x表示任意字符
X字符,x表示任意字符
\\ 反斜线字符 :如果是一个\必须在正则中使用两个反斜线代表一个\
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符
字符类
[abc] a、b 或 c(简单类 )
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) :用户名:4-14位的数字或者字母(大小写均可)
预定义字符类
. 任何字符 邮箱本身就包含有.比如:zhangsan@qq.com :如果本身是.--->\.
\d 数字: [0-9] \d----->在java代码中写正则:\\d
\w 单词字符: [a-zA-Z_0-9
]
\D : [ ^0-9 ]
\W : [^a-zA-Z_0-9]
\s : 一个空格
\S : 一个非空格
在java中只要是符合单词的组成规则都可以使用:举例:用户名:5-15为的字母或者数字
边界匹配器
^ 字符串的起始位置
$ 字符串的结尾位置
\b 单词边界
hellworld?haha:xx?
Greedy 数量词
X?: X字符出现了一次或者一次也没有
X+: X字符出现了一次或多次
X*: X字符出现了0次或多次
X{n}:X字符恰好出现了n次
X{n,}:X字符至少出现n次
X{n,m}:X字符恰好出现了n次但是不超过m次
总结
re.search( ) re.match( )
z = re.search(pattern,string)
z = re.match(pattern,string)
字符串语法表达式