1、正則表達式的優點
正則表達式能夠匹配只要你能描述出來的字符串,對於普通的文本中常用的一些關鍵詞,如果想匹配某種模式很適合用而不是通過普通的contains這種是否含有等匹配。
2、python正則表達式速查表
3、python正則表達式使用方法:
首先,導入python的re模塊
import re
# 將正則表達式編譯成Pattern對象
pattern = re.compile(r'因.+?入院')
# 使用Pattern匹配文本,獲得匹配結果,無法匹配時將返回None
notes = '
初步診斷: 1.慢性阻塞性肺病伴急性加重 2.肺部感染 3.冠心病 缺血性心肌病 心功能II級 4.高血壓病?
'
match
=
pattern
.
match
(
notes
)
if match:
# 使用Match獲得分組信息
print match.group()
re.compile(strPattern[, flag]):
flag可選值有:
- re.I(re.IGNORECASE): 忽略大小寫(括號內是完整寫法,下同)
- re.M(MULTILINE): 多行模式,改變'^'和'$'的行爲(參見上圖)
- re.S(DOTALL): 點任意匹配模式,改變'.'的行爲
- re.L(LOCALE): 使預定字符類 \w \W \b \B \s \S 取決於當前區域設定
- re.U(UNICODE): 使預定字符類 \w \W \b \B \s \S \d \D 取決於unicode定義的字符屬性
- re.X(VERBOSE): 詳細模式。
Match
Match對象是一次匹配的結果,包含了很多關於此次匹配的信息,可以使用Match提供的可讀屬性或方法來獲取這些信息。
match屬性:
- string: 匹配時使用的文本。
- re: 匹配時使用的Pattern對象。
- pos: 文本中正則表達式開始搜索的索引。值與Pattern.match()和Pattern.seach()方法的同名參數相同。
- endpos: 文本中正則表達式結束搜索的索引。值與Pattern.match()和Pattern.seach()方法的同名參數相同。
- lastindex: 最後一個被捕獲的分組在文本中的索引。如果沒有被捕獲的分組,將爲None。
- lastgroup: 最後一個被捕獲的分組的別名。如果這個分組沒有別名或者沒有被捕獲的分組,將爲None。
方法:
- group([group1, …]):
獲得一個或多個分組截獲的字符串;指定多個參數時將以元組形式返回。group1可以使用編號也可以使用別名;編號0代表整個匹配的子串;不填寫參數時,返回group(0);沒有截獲字符串的組返回None;截獲了多次的組返回最後一次截獲的子串。
- groups([default]):
以元組形式返回全部分組截獲的字符串。相當於調用group(1,2,…last)。default表示沒有截獲字符串的組以這個值替代,默認爲None。
- groupdict([default]):
返回以有別名的組的別名爲鍵、以該組截獲的子串爲值的字典,沒有別名的組不包含在內。default含義同上。
- start([group]):
返回指定的組截獲的子串在string中的起始索引(子串第一個字符的索引)。group默認值爲0。
- end([group]):
返回指定的組截獲的子串在string中的結束索引(子串最後一個字符的索引+1)。group默認值爲0。
- span([group]):
返回(start(group), end(group))。
- expand(template):
將匹配到的分組代入template中然後返回。template中可以使用\id或\g、\g引用分組,但不能使用編號0。\id與\g是等價的;但\10將被認爲是第10個分組,如果你想表達\1之後是字符'0',只能使用\g<1>0。
其中,findall是非常好用的,可以直接把匹配的內容以列表的形式返回,示例如下:
4、正則表達式練習地址:
這是一個神器地址,相當好用:http://regexr.com/