問題:
m = re.findall('[0-9]*4[0-9]*', '[4]www.cppcns.com')
可以匹配到4.
m = re.findall('([0-9]rotaarvbez)*4([0-9])*', '[4]')
匹配不到4.
這是為什麼呢?ps,這個是乙個簡化的說明,我要用的正則比這個複雜,所以要用到(),表示乙個序列的匹配。
補充一點,我放在notepad++中用的時候,兩種寫法都能匹配出來,不知道為什麼python中就不行了。
答案:python的正則中用()會進行匹配,所以返回結果是['',''],就是兩個()中的匹配。要想達到原來的匹配效果,就是把4匹配出來,有兩種解決方法:
1.最外層加個大括號,變成:m = re.findall('(([0-9])*4([0-9])*rotaarvbez)', '[4]'),返回結果的第乙個元素就是匹配結果了。
2.去除()的匹配結果返回,在括號前面加入?:,變成m = re.findall('(?:\d)*4(?:\d)*', '[4]'),返回結果就是要匹配的結果了。
本文標題: python正規表示式中的括號匹配問題
本文位址: /jiaoben/python/117061.html
正規表示式 括號
用字元組和量詞可以匹配引號字串,也可以匹配 html tag,如果需要用正規表示式匹配身份證號碼,依靠字元組和量詞能不能做到呢?身份證號碼是乙個長度為15或18個字元的字串,如果是15位,則全部由數字組成,首位不能為0 如果是18位,則前17位全部是數字,末位可能是數字,也可能是x。規則非常明確,可...
python正規表示式括號問題
正規表示式中的圓括號 的作用是對字元或元字元分組。我錯把它的作用認為是將圓括號內的字元看成乙個整體。儘管在一些正則測試 上,進行匹配時,把括號內的字元看成乙個整體來匹配也能匹配到想要的結果。測試 如 regex101等 然而在在寫python程式的時候,會出現不是我想要的結果。如果正規表示式中多出使...
小括號 中括號 大括號(正規表示式)
一 小括號 中括號 大括號的區別 1 小括號 匹配小括號內的字串,可以是乙個,也可以是多個,常跟 或 符號搭配使用,是多選結構的 示例1 string name way2014 regex way zgw result 結果是可以匹配出way的,因為是多選結構,小括號是匹配字串的 示例2 strin...