0Pricing
Learn AI with Python · บทเรียน

กลุ่มจับและกลุ่มที่มีชื่อ

วงเล็บสำหรับจับกลุ่ม กลุ่มที่มีชื่อ (?P ...) re.fullmatch() และการมองไปข้างหน้า/ข้างหลัง

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

เหตุใดจึงต้องใช้กลุ่ม

กลุ่มช่วยให้คุณแยกส่วนต่าง ๆ ของการตรงกันออกมา เพื่อดึงเฉพาะส่วนที่ต้องการได้ เช่น รหัสพื้นที่จากหมายเลขโทรศัพท์ ปีจากวันที่ หรือชื่อผู้ใช้จากอีเมล

บทเรียนนี้ครอบคลุมกลุ่มจับข้อความ กลุ่มแบบตั้งชื่อ กลุ่มที่ไม่จับข้อความ และการตรวจสอบรอบข้าง

กลุ่มจับข้อความด้วย ( )

ครอบส่วนหนึ่งของรูปแบบด้วยวงเล็บเพื่อจับส่วนนั้น การตรงกันทั้งหมดรวมถึงแต่ละกลุ่มจะเข้าถึงได้ผ่านออบเจ็กต์ Match

import re

m = re.search("(\d{4})-(\d{2})-(\d{2})", "Date: 2026-05-29")
print(m.group())    # "2026-05-29" (whole match)
print(m.group(1))   # "2026"
print(m.group(2))   # "05"

match.group, groups, groupdict

ตัวเข้าถึงที่มีประโยชน์:

  • m.group(0) — การตรงกันทั้งหมด
  • m.group(n) — กลุ่มที่จับได้ลำดับที่ n
  • m.groups() — ทูเพิลของกลุ่มที่จับได้ทั้งหมด
import re

m = re.search("(\d{4})-(\d{2})-(\d{2})", "2026-05-29")
print(m.groups())   # ("2026", "05", "29")
year, month, day = m.groups()

กลุ่มแบบตั้งชื่อด้วย (?P<name>...)

การอ้างกลุ่มด้วยหมายเลขอาจเปราะบาง กลุ่มแบบตั้งชื่อใช้ (?P<name>...) เพื่อให้คุณอ้างอิงกลุ่มที่จับได้ด้วยชื่อที่สื่อความหมาย

import re

m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.group("year"))   # "2026"
print(m.group("month"))  # "05"

groupdict สำหรับผลลัพธ์แบบมีโครงสร้าง

m.groupdict() จะส่งคืนกลุ่มแบบตั้งชื่อทั้งหมดเป็นพจนานุกรม เหมาะอย่างยิ่งสำหรับเปลี่ยนข้อความที่ตรงกันให้เป็นระเบียนที่มีโครงสร้าง

import re

m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.groupdict())
# {"year": "2026", "month": "05", "day": "29"}

กลุ่มที่ไม่จับข้อความ (?:...)

บางครั้งคุณต้องใช้วงเล็บเพื่อจัดกลุ่มเท่านั้น (เช่น เพื่อใช้ตัวระบุจำนวน) แต่ไม่ต้องการจับข้อความ ให้ใช้ (?:...)

วิธีนี้ช่วยให้ลำดับหมายเลขกลุ่มของคุณเป็นระเบียบ

import re

# Group "ab" so + applies, but do not capture it
m = re.search("(?:ab)+(\d+)", "ababab42")
print(m.group(1))   # "42" -> group 1 is the digits, not "ab"

การอ้างอิงย้อนกลับ

การอ้างอิงย้อนกลับ \1 จะตรงกับข้อความเดียวกับที่กลุ่มหนึ่งจับไว้ก่อนหน้านี้ มีประโยชน์สำหรับค้นหาคำที่ซ้ำกัน

import re

# Find a word repeated twice in a row
print(re.findall("(\w+) \1", "the the cat cat sat"))
# ["the", "cat"]

การมองไปข้างหน้า (?=...)

การมองไปข้างหน้าแบบเป็นบวก (?=...) ยืนยันว่าต้องมีสิ่งใดตามมา โดยไม่ใช้สิ่งนั้นในการจับคู่ ข้อความที่ยืนยันจะไม่เป็นส่วนหนึ่งของการจับคู่

ในที่นี้ เราจะจับคู่ตัวเลขก็ต่อเมื่อตัวเลขนั้นตามด้วย "px"

import re

print(re.findall("\d+(?=px)", "10px 20em 30px"))
# ["10", "30"]  -> "20" skipped (not followed by px)

การมองไปข้างหน้าแบบเป็นลบ (?!...)

การมองไปข้างหน้าแบบเป็นลบ (?!...) ยืนยันว่าต้องไม่มีสิ่งใดตามมา จับคู่ตัวเลขก็ต่อเมื่อไม่ได้ตามด้วย "px"

import re

print(re.findall("\d+(?!px)", "10px 20em 30px"))
# matches numbers not followed directly by px

การมองย้อนกลับ (?<=...) และ (?<!...)

การมองย้อนกลับ จะยืนยันว่ามีสิ่งใดอยู่ ก่อนหน้า การจับคู่ โดยไม่ใช้สิ่งนั้นในการจับคู่:

  • (?<=...) แบบเป็นบวก — ต้องมีสิ่งนี้อยู่ก่อนหน้า
  • (?<!...) แบบเป็นลบ — ต้องไม่มีสิ่งนี้อยู่ก่อนหน้า

ในที่นี้ เราจะดึงจำนวนเงินที่มีเครื่องหมายดอลลาร์อยู่ก่อนหน้า โดยไม่จับเครื่องหมายนั้น

import re

print(re.findall("(?<=\$)\d+", "price $50 and 60 units"))
# ["50"]  -> only the amount after $

การรวมกลุ่มและการตรวจสอบรอบข้าง

ตัวดึงข้อมูลที่ใช้งานจริงมักผสมเครื่องมือเหล่านี้เข้าด้วยกัน รูปแบบนี้ดึงราคาที่มีชื่อ ซึ่งต้องมีสัญลักษณ์สกุลเงินอยู่ก่อนหน้าและมีส่วนทศนิยมตามหลัง:

import re

text = "Total: $1299.99 paid"
m = re.search("(?<=\$)(?P<amount>\d+)\.(?P<cents>\d{2})", text)
print(m.group("amount"), m.group("cents"))   # 1299 99

ตรวจสอบอย่างรวดเร็ว: กลุ่มที่มีชื่อ

คุณต้องการดึงรายการที่จับคู่โดยใช้ชื่อที่อ่านเข้าใจง่าย เช่น "year" แทนการใช้ตัวเลข

ทบทวน: กลุ่มและการตรวจสอบรอบข้าง

ขณะนี้คุณสามารถดึงโครงสร้างที่เฉพาะเจาะจงจากข้อความได้แล้ว:

  • ( ) กลุ่มที่ใช้จับคู่และดึงข้อมูลด้วย m.group(n) และ m.groups()
  • (?P<name>...) กลุ่มที่มีชื่อด้วย m.groupdict()
  • (?:...) กลุ่มที่ไม่ใช้จับคู่ สำหรับจัดกลุ่มอย่างเป็นระเบียบ
  • การอ้างอิงย้อนกลับ \1 สำหรับข้อความที่ซ้ำกัน
  • การมองไปข้างหน้า (?=)/(?!) และการมองย้อนกลับ (?<=)/(?<!)

ถัดไป: นำทุกอย่างมารวมกันเพื่อทำความสะอาดข้อความสำหรับปัญญาประดิษฐ์

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

บทเรียน “กลุ่มจับและกลุ่มที่มีชื่อ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “กลุ่มจับและกลุ่มที่มีชื่อ”

วงเล็บสำหรับจับกลุ่ม กลุ่มที่มีชื่อ (?P ...) re.fullmatch() และการมองไปข้างหน้า/ข้างหลัง คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “กลุ่มจับและกลุ่มที่มีชื่อ” ใช้เวลานานแค่ไหน

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

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

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

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

  1. รูปแบบนิพจน์ประจำและคลาสอักขระ
  2. โมดูล re: search, match, findall, sub
  3. กลุ่มจับและกลุ่มที่มีชื่อ
  4. การทำความสะอาดข้อความสำหรับปัญญาประดิษฐ์ด้วยนิพจน์ רגูลาร์
← กลับไปที่ Learn AI with Python