Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การจับคู่รูปแบบข้ามหลายบรรทัดใน Python Regex (re.DOTALL)

แฟล็ก re.DOTALL (หรือ re.S) บอกให้ Python ทำให้อักขระพิเศษ . (dot) จับคู่ อักขระทุกตัวรวมถึง newline ด้วย

ตัวอย่าง

import re
paragraph = """This is a paragraph.
It has multiple lines."""
match = re.search(r'

.*

', paragraph, re.DOTALL) print(match.group(0))

ผลลัพธ์

This is a paragraph.
It has multiple lines.

คำอธิบาย

  • โดยค่าเริ่มต้น . ไม่จับคู่ \n (newline)
  • re.DOTALL ทำให้ . จับคู่อักขระใดๆ รวม newline
  • รูปแบบ

    .*

    จับคู่ตั้งแต่

    ถึง

    ข้ามบรรทัดได้

ทางเลือกอื่น: ใช้ [\s\S] แทน

# ไม่ต้องใช้ flag
match = re.search(r'

[\s\S]*

', paragraph)

[\s\S] หมายถึง "ช่องว่างหรือไม่ใช่ช่องว่าง" = อักขระใดๆ ทั้งหมด ทำงานได้ในทุก regex engine