python正則表達式search
A. python正則表達式是什麼
正則表達式(regex)用於探索給定字元串中的固定模式。我們想找到的模式可以是任何東西。可以創建類似於查找電子郵件或手機號碼的模式。還可以創建查找以a開頭、以z結尾的字元串的模式。
創建模式:
使用正則表達式時,首先需要學習的是如何創建模式。接下來將對一些最常用的模式進行逐一介紹。可以想到最簡單的模式是一個簡單的字元串。
pattern = r'times'
string = "It was the best of times, it was the worst of times."
print(len(re.findall(pattern,string)))
注意:
「正則表達式,又稱規則表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或re),是計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本」,那使用正則表達式的目的是什麼呢?網路中只寫了兩句話:
1. 給定的字元串是否符合正則表達式的過濾邏輯(稱作「匹配」)。
2. 可以通過正則表達式,從字元串中獲取我們想要的特定部分。
大家可以簡單的理解為兩點:search和match。OK,了解了正則表達式的概念和作用,我們趕緊進入Python的學習吧!正則表達式不是Python獨有的武器,但Python中的正則表達式無疑是最簡單卻又最強大的。
B. Python正則表達式的幾種匹配方法
1.測試正則表達式是否匹配字元串的全部或部分
regex=ur"" #正則表達式
if re.search(regex, subject):
do_something()
else:
do_anotherthing()
2.測試正則表達式是否匹配整個字元串
regex=ur"/Z" #正則表達式末尾以/Z結束
if re.match(regex, subject):
do_something()
else:
do_anotherthing()
3.創建一個匹配對象,然後通過該對象獲得匹配細節(Create an object with details about how the regex matches (part of) a string)
regex=ur"" #正則表達式
match = re.search(regex, subject)
if match:
# match start: match.start()
# match end (exclusive): atch.end()
# matched text: match.group()
do_something()
else:
do_anotherthing()
4.獲取正則表達式所匹配的子串(Get the part of a string matched by the regex)
regex=ur"" #正則表達式
match = re.search(regex, subject)
if match:
result = match.group()
else:
result = ""
C. python正則表達式 如何找到指定字元後面完整的數字字元串
使用re模塊的search函數,能過正則表達式查找,代碼如下:
importre
reg=re.compile(r"(?<=指定字元)d+")
match=reg.search("待查找文本")
printmatch.group(0)
(?<=指定字元)此部分定位指定字元,查找但不包含
d+此部分為一個以上數字
這樣就可以查找出數字字元串
D. Python正則表達式match和search區別,舉個例子
re.match 嘗試從字元串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。
re.search 掃描整個字元串並返回第一個成功的匹配。
re.match只匹配字元串的開始,如果字元串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字元串,直到找到一個匹配。
實例:
importre
line="Catsaresmarterthandogs";
matchObj=re.match(r'dogs',line,re.M|re.I)
ifmatchObj:
print("match-->matchObj.group():",matchObj.group())
else:
print("Nomatch!!")
matchObj=re.search(r'dogs',line,re.M|re.I)
ifmatchObj:
print("search-->matchObj.group():",matchObj.group()
else:
print("Nomatch!!")
運行結果:
Nomatch!!
search-->matchObj.group():dogs
E. python 怎麼用正則表達式查找字元串
# encoding: UTF-8
import re
# 將正則表達式編譯成Pattern對象
pattern = re.compile(r'(a|b)\1')
# 使用search()查找匹配的子串,不存在能匹配的子串時將返回None
# 這個例子中使用match()無法成功匹配
match = pattern.search('abaaab')
if match:
# 使用Match獲得分組信息
print match.group()
F. python 正則表達式 search findall
因為當正則表達式中存在分組的時候,findall返回的結果是分組對應的內容,因為(,\d{3})沒有匹配,所以返回的數組為空.
解決辦法是加上小括弧,象這樣 ^(\d{1,3}(,\d{3})*)$ 就應該能返回數字了
G. python 正則表達式
按照你的要求編寫的程序如下
importre
s='[有效信息]ab[abd]ab[abe]ab[abf]'
regex=r'[有效信息](ab[[a-z]+])+'
result=re.match(regex,s)
ifresult:
print(result.group())
else:
print("NoMatch!")
源代碼(注意源代碼的縮進)
H. python正則表達式疑問:為什麼search到的某個分組得到tuple類型
因為你的程序中
g1=reg.search('a.b.c.d.e.z').groups(1)
寫錯了,應該是
g1=reg.search('a.b.c.d.e.z').group(1)
把groups改成group,去掉s就行了.
groups(1)會以元組形式返回所有捕獲組的數據
group(1)會返回第一捕獲組的數據
I. python正則表達式,找到所有匹配的字元串
m = re.search('hello$','hello world! hello')search()會掃描整個string查找匹配,
match()只有在開始0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none