python 多行匹配


python多行匹配

r = re.compile("需要的正則表達式", re.M)
 
匹配到需要的字符,可以獲取紅括號內的數字
r = re.compile("r ([0-9]{5,} )")
 
舉個例子: 需要獲取20462和24729連個數字
import re
data = """
       r24062 line1
       hello word !!!!
       r24729 line2
       revision:24181
       """
 
   r = re.compile("^r([0-9]{5,})", re.M)
   nums = r.findall(data)
   print nums
 
---------------------
output:["24062", "24729"]
 

如果你要多行匹配,那么加上re.S和re.M標志
re.S:.將會匹配換行符,默認.逗號不會匹配換行符

>>> re.findall(r"a(\d+)b.+a(\d+)b","a23b\na34b")
        []
>>> re.findall(r"a(\d+)b.+a(\d+)b","a23b\na34b",re.S)
        [('23','34')]
>>>

re.M:^$標志將會匹配每一行,默認^只會匹配符合正則的第一行;默認$只會匹配符合正則的末行

>>> re.findall(r"^a(\d+)b","a23b\na34b")
        ['23']
>>> re.findall(r"^a(\d+)b","a23b\na34b",re.M)
        ['23','34']

但是,如果沒有^標志,

>>> re.findall(r"a(\d+)b","a23b\na34b")
        ['23','43']

可見,是無需re.M


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM