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

กลุ่มและการจับค่าด้วยชื่อ

ดึงข้อมูลด้วยกลุ่มจับค่าและไวยากรณ์กลุ่มที่มีชื่อ

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

บทนำ

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

กลุ่มจับพื้นฐาน

วงเล็บ () สร้างกลุ่มจับ m.group(1) ส่งคืนส่วนที่จับคู่ได้ของกลุ่มแรก
import re
m = re.search(r'(\d{4})-(\d{2})-(\d{2})', '2024-01-15')
if m: print(m.group(1), m.group(2), m.group(3))

m.groups()

m.groups() ส่งคืนกลุ่มจับทั้งหมดในรูปแบบทูเพิล
import re
m = re.search(r'(\w+)@(\w+)\.(\w+)', 'user@example.com')
if m: print(m.groups())

กลุ่มที่มีชื่อ

(?Ppattern) สร้างกลุ่มที่มีชื่อ เข้าถึงได้ด้วย m.group('name') หรือ m.groupdict()
import re
m = re.search(
    r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})',
    '2024-01-15'
)
if m: print(m.groupdict())

กลุ่มที่ไม่จับคู่

(?:pattern) ใช้จัดกลุ่มโดยไม่จับคู่ มีประโยชน์เมื่อต้องจัดกลุ่มเพื่อใช้ตัวระบุจำนวน แต่ไม่ต้องการผลการจับคู่
import re
print(re.findall(r'(?:cat|dog)s?', 'cats dogs cat dog'))

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

\1 ภายในรูปแบบจะอ้างถึงสิ่งที่กลุ่ม 1 จับคู่ได้ มีประโยชน์สำหรับค้นหาคำที่ซ้ำกัน
import re
# Match repeated words
m = re.search(r'\b(\w+)\s+\1\b', 'the the quick brown', re.IGNORECASE)
if m: print('repeated:', m.group())

findall กับกลุ่ม

เมื่อรูปแบบมีกลุ่ม findall จะส่งคืนรายการทูเพิลของกลุ่ม ไม่ใช่การจับคู่ทั้งหมด
import re
result = re.findall(r'(\w+)=(\w+)', 'x=1 y=2 z=3')
print(result)

การใช้กลุ่มใน re.sub()

ใน re.sub() ให้ใช้ \1 หรือ \g เพื่อแทรกกลุ่มที่จับคู่ได้ลงในสตริงแทนที่
import re
result = re.sub(r'(\w+)\s(\w+)', r'\2 \1', 'John Smith')
print(result)

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

(?=expr) คือการมองไปข้างหน้าเชิงบวก โดยจับคู่ตำแหน่งที่มี expr อยู่ถัดไปโดยไม่ใช้ตัวอักขระนั้น
import re
# Prices followed by USD
print(re.findall(r'\d+(?= USD)', '100 USD 200 EUR 300 USD'))

การมองย้อนหลัง (?<= )

(?<=expr) คือการมองย้อนหลังเชิงบวก โดยจับคู่ตำแหน่งที่มี expr อยู่ก่อนหน้าโดยไม่ใช้ตัวอักขระนั้น
import re
print(re.findall(r'(?<=\$)\d+', 'paid $100 and $200'))

การอ้างอิงย้อนกลับที่มีชื่อ

(?P=name) ในรูปแบบจะอ้างถึงค่าของกลุ่มที่มีชื่อ มีประโยชน์สำหรับจับคู่แท็กปิด
import re
m = re.search(r'<(?P<tag>\w+)>.*?</(?P=tag)>', '<b>hello</b>')
if m: print(m.group())

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

คุณเข้าถึงกลุ่มจับที่มีชื่อว่า 'year' จากอ็อบเจ็กต์การจับคู่ m ได้อย่างไร

สรุป

กลุ่ม () ใช้จับส่วนต่าง ๆ m.group(1), m.groups(), m.groupdict() กลุ่มที่มีชื่อ: (?P) กลุ่มที่ไม่จับคู่: (?:) การอ้างอิงย้อนกลับ: \1 หรือ \g ในข้อความแทนที่

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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