python正則group
❶ python中正則問題
r'(.*) are (.*?) .*'
首先,這是一個字元串,前面的一個r表示字元串為非轉義的原始字元串,讓編譯器忽略反斜杠,也就是忽略轉義字元。但是這個字元串里沒有反斜杠,所以這個r可有可無。
(.*) 第一個匹配分組,.*代表匹配除換行符之外的所有字元
(.*?)第二個匹配分組,.*?後面多個問號,代表非貪婪模式,也就是說只匹配符合條件的最少字元
後面的一個.* 沒有括弧包圍,所以不是分組,匹配效果和第一個一樣,但是不計入匹配結果中。
matchObj.group() 等同於matchObj.group(0),表示匹配到的完整文本字元
matchObj.group(1) 得到第一組匹配結果,也就是(.*)匹配到的
matchObj.group(2) 得到第二組匹配結果,也就是(.*?)匹配到的
因為只有匹配結果中只有兩組,所以填3時會報錯。
❷ Python 正則匹配為什麼group(1)返回為空,group(2)返回為none
你的正則從a字元串提取不到任何信息,自然列印就空白了。
❸ python 正則表達式 groups和group有什麼區別
group和groups是兩個不同的函數。
一般,m.group(N) 返回第N組括弧匹配的字元。
而m.group() == m.group(0) == 所有匹配的字元,與括弧無關,這個是API規定的。
m.groups() 返回所有括弧匹配的字元,以tuple格式。
m.groups() == (m.group(0), m.group(1), ...)
對你給的例子:
m = re.match("([abc])+", "abc")
你的+號在括弧外面。括弧最多匹配到一個字元,要麼是a, 要麼是c,這個python引擎匹配的是末尾的c。
而m.group() == m.group(0) 這個返回的是整個匹配的字元串"abc".
關於捕獲型括弧在正則表達式里的用法,參見相關文檔。
❹ python 正則表達式 groups和group有什麼區別
group和groups是兩個不同的函數。
一般,m.group(N)
返回第N組括弧匹配的字元。
而m.group()
==
m.group(0)
==
所有匹配的字元,與括弧無關,這個是API規定的。
m.groups()
返回所有括弧匹配的字元,以tuple格式。
m.groups()
==
(m.group(0),
m.group(1),
...)
對
你給的
例子:
m
=
re.match("([abc])+",
"abc")
你的+號在括弧外面。括弧最多匹配到一個字元,要麼是a,
要麼是c,這個python引擎匹配的是末尾的c。
而m.group()
==
m.group(0)
這個返回的是整個匹配的字元串"abc".
關於捕獲型括弧在
正則表達式
里的用法,參見相關文檔。
❺ python 正則表達式 groups和group有什麼區別
group和groups是兩個不同的函數。
一般,m.group(N) 返回第N組括弧匹配的字元。
而m.group() == m.group(0) == 所有匹配的字元,與括弧無關,這個是API規定的。
m.groups() 返回所有括弧匹配的字元,以tuple格式。
m.groups() == (m.group(0), m.group(1), ...)
對你給的例子:
m = re.match("([abc])+", "abc")
你的+號在括弧外面。括弧最多匹配到一個字元,要麼是a, 要麼是c,這個python引擎匹配的是末尾的c。
而m.group() == m.group(0) 這個返回的是整個匹配的字元串"abc".
❻ 關於python正則匹配的問題
使用pat.findall
匹配整個字元串,多次匹配
使用pat.search
整個字元串中匹配,只匹配一次
使用pat.match
從第一個字元開始匹配,只匹配一次
但是使用search和match必須使用group()來查看
即:你可以這樣
result
=
pat.search(buff)
result.group()
#這個就是你相匹配的東西,只匹配一次
❼ python正則表達式groups和group有什麼區別
group和groups是兩個不同的函數。
一般,m.group(N)
返回第N組括弧匹配的字元。
而m.group()
==
m.group(0)
==
所有匹配的字元,與括弧無關,這個是API規定的。
m.groups()
返回所有括弧匹配的字元,以tuple格式。
m.groups()
==
(m.group(0),
m.group(1),
...)
對你給的例子:
m
=
re.match("([abc])+",
"abc")
你的+號在括弧外面。括弧最多匹配到一個字元,要麼是a,
要麼是c,這個python引擎匹配的是末尾的c。
而m.group()
==
m.group(0)
這個返回的是整個匹配的字元串"abc".
關於捕獲型括弧在正則表達式里的用法,參見相關文檔。
❽ 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!")
源代碼(注意源代碼的縮進)
❾ python 正則表達式 groups和group有什麼區別
group和groups是兩個不同的函數。
一般,m.group(N) 返回第N組括弧匹配的字元。
而m.group() == m.group(0) == 所有匹配的字元,與括弧無關,這個是API規定的。
m.groups() 返回所有括弧匹配的字元,以tuple格式。
m.groups() == (m.group(0), m.group(1), ...)
正則表達式中,group()用來提取分組截獲的字元串,()用來分組。
組是通過 "(" 和 ")" 元字元來標識的。 "(" 和 ")" 有很多在數學表達式中相同的意思;它們一起把在它們裡面的表達式組成一組。舉個例子,你可以用重復限制符,象 *, +,?, 和 {m,n},來重復組里的內容,比如說(ab)* 將匹配零或更多個重復的 "ab"。
如果不引入括弧,整個個表達式作為一個組,是group(0)
對於題目中的例子:
m = re.match("([abc])+", "abc")
+號在括弧外面。括弧最多匹配到一個字元,要麼是a, 要麼是c,這個python引擎匹配的是末尾的c。
而m.group() == m.group(0) 這個返回的是整個匹配的字元串"abc".
❿ 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 = ""