0Pricing
Python Academy · บทเรียน

re.sub แฟล็ก และรูปแบบที่คอมไพล์แล้ว

แทนที่ข้อความ ใช้แฟล็กอย่าง IGNORECASE และคอมไพล์รูปแบบไว้ใช้ซ้ำ

re.sub แฟล็ก และรูปแบบที่คอมไพล์แล้ว เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

บทนำ

re.sub ใช้แทนที่ส่วนที่จับคู่ได้ แฟล็กใช้ปรับเปลี่ยนพฤติกรรมการจับคู่ รูปแบบที่คอมไพล์แล้วมีประสิทธิภาพเมื่อนำกลับมาใช้ซ้ำ

re.sub พื้นฐาน

re.sub(pattern, repl, string) แทนที่ส่วนที่จับคู่ได้ทั้งหมดด้วย repl อาร์กิวเมนต์ลำดับที่ 4 count= ใช้จำกัดจำนวนการแทนที่
import re
result = re.sub(r'\d+', 'X', 'abc 123 def 456')
print(result)

re.sub กับกลุ่ม

ใช้ \1, \2 หรือ \g<1> ในข้อความแทนที่เพื่อแทรกกลุ่มที่จับคู่ได้ ใช้ \g สำหรับกลุ่มที่มีชื่อ
import re
# Swap first and last name
result = re.sub(r'(\w+),\s*(\w+)', r'\2 \1', 'Smith, John')
print(result)

re.sub กับฟังก์ชัน

ข้อความแทนที่อาจเป็นสิ่งที่เรียกใช้ได้: f(match) → สตริงแทนที่ ทำให้รองรับการแปลงที่ซับซ้อนได้
import re
def double_num(m): return str(int(m.group())*2)
result = re.sub(r'\d+', double_num, '1 cats and 2 dogs')
print(result)

re.IGNORECASE (re.I)

ทำให้รูปแบบไม่คำนึงถึงตัวพิมพ์เล็กใหญ่ r'hello' เมื่อใช้กับ re.I จะจับคู่กับ 'HELLO', 'Hello' และรูปแบบอื่น ๆ
import re
print(re.findall(r'hello', 'Hello HELLO hello', re.I))

re.MULTILINE (re.M)

ทำให้ ^ และ $ จับคู่กับจุดเริ่มต้นหรือจุดสิ้นสุดของแต่ละ LINE แทนที่จะเป็นทั้งสตริง
import re
text = 'first\nsecond\nthird'
print(re.findall(r'^\w+', text, re.M))

re.DOTALL (re.S)

ทำให้ . จับคู่กับอักขระขึ้นบรรทัดใหม่ได้ด้วย หากไม่ใช้แฟล็กนี้ . จะหยุดที่ขอบเขตบรรทัด
import re
text = 'line1\nline2'
print(re.search(r'line1.line2', text, re.S).group())

re.VERBOSE (re.X)

อนุญาตให้ใส่ความคิดเห็นและช่องว่างในรูปแบบเพื่อให้อ่านง่าย ช่องว่างจะถูกละเว้น หากต้องการช่องว่างตามตัวอักษร ให้ใช้ \ ตามด้วยช่องว่าง
import re
pattern = re.compile(r'''
    (?P<year>\d{4})   # year
    -
    (?P<month>\d{2}) # month
    -
    (?P<day>\d{2})   # day
''', re.X)
print(pattern.search('2024-01-15').groupdict())

การผสานแฟล็ก

ผสานแฟล็กด้วย | เช่น re.I | re.M หรือใช้แฟล็กแบบแทรก (?im) ที่จุดเริ่มต้นของรูปแบบ
import re
print(re.findall(r'^\w+', 'Hello\nWorld', re.I | re.M))

re.compile เพื่อประสิทธิภาพ

คอมไพล์รูปแบบหนึ่งครั้งด้วย re.compile() แล้วเรียกใช้เมธอดกับอ็อบเจ็กต์ที่คอมไพล์แล้ว เช่น pat.search() และ pat.findall()
import re
email_re = re.compile(r'[\w.+-]+@[\w-]+\.[\w.]+')
emails = ['user@example.com', 'invalid', 'test@test.org']
print([e for e in emails if email_re.fullmatch(e)])

re.escape()

re.escape(string) ทำเอสเคปอักขระพิเศษของ Regex ทั้งหมดในสตริง จึงสามารถใช้สตริงนั้นเป็นรูปแบบตามตัวอักษรได้
import re
user_input = 'price.is $10+'
pattern = re.compile(re.escape(user_input))
text = 'The price.is $10+ today'
print(bool(pattern.search(text)))

ตรวจสอบอย่างรวดเร็ว

แฟล็กใดทำให้ . จับคู่กับอักขระขึ้นบรรทัดใหม่ใน Regex ของ Python

สรุป

re.sub: แทนที่ด้วยสตริง กลุ่ม หรือฟังก์ชัน แฟล็ก: re.I (ตัวพิมพ์เล็กใหญ่), re.M (หลายบรรทัด ^/$), re.S (จุดจับคู่กับ \n), re.X (รูปแบบอ่านง่าย) คอมไพล์เพื่อการนำกลับมาใช้ซ้ำ

เรียนรู้ต่อไป

ทำได้ดีมาก บทเรียนถัดไปรอคุณอยู่

คำถามที่พบบ่อย

บทเรียน “re.sub แฟล็ก และรูปแบบที่คอมไพล์แล้ว” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “re.sub แฟล็ก และรูปแบบที่คอมไพล์แล้ว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “re.sub แฟล็ก และรูปแบบที่คอมไพล์แล้ว”

แทนที่ข้อความ ใช้แฟล็กอย่าง IGNORECASE และคอมไพล์รูปแบบไว้ใช้ซ้ำ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “re.sub แฟล็ก และรูปแบบที่คอมไพล์แล้ว” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานนิพจน์ทั่วไป
  2. การใช้ re.match, re.search, re.findall
  3. กลุ่มและการจับค่าด้วยชื่อ
  4. re.sub แฟล็ก และรูปแบบที่คอมไพล์แล้ว
← กลับไปที่ Python Academy