ปิดแท็กด้วย!
ระหว่างนี้ คุณกำลังทำงานในอีกโปรเจกต์หนึ่ง บริษัทกำลังจะพัฒนาผลิตภัณฑ์ใหม่ที่ช่วยให้นักพัฒนาตรวจสอบโค้ดที่กำลังเขียนได้โดยอัตโนมัติ คุณต้องเขียนสคริปต์สั้น ๆ เพื่อตรวจสอบว่าแท็ก HTML ทุกแท็กที่เปิดไว้มีแท็กปิดที่ถูกต้องด้วย
ตัวอย่างสตริงที่มีแท็ก HTML มีดังนี้:
<title>The Data Science Company</title>
แท็กเปิดของ HTML จะอยู่ที่ต้นสตริงเสมอ โดยอยู่ภายใน <> ส่วนแท็กปิดก็อยู่ภายใน <> เช่นกัน แต่จะมี / นำหน้า
อย่าลืมว่า capturing groups สามารถอ้างอิงได้ด้วยตัวเลข เช่น \4
ลิสต์ html_tags ที่มีสตริงสามรายการพร้อมแท็ก HTML และโมดูล re ได้ถูกโหลดไว้ในเซสชันแล้ว สามารถใช้ print() เพื่อดูข้อมูลใน IPython Shell ได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Regular Expressions ใน Python
คำแนะนำการฝึกหัด
- เติม regex ให้สมบูรณ์เพื่อจับคู่แท็ก HTML ที่มีการปิดครบถ้วน จากนั้นตรวจสอบว่าแต่ละสตริงในลิสต์
html_tagsมีส่วนที่ตรงกันหรือไม่ แล้วกำหนดผลลัพธ์ให้กับmatch_tag - หากพบส่วนที่ตรงกัน ให้พิมพ์กลุ่มแรกที่ดักจับและบันทึกไว้ใน
match_tag - หากไม่พบส่วนที่ตรงกัน ให้เติม regex เพื่อจับคู่เฉพาะข้อความภายในแท็ก HTML แล้วกำหนดให้กับ
notmatch_tag - พิมพ์กลุ่มแรกที่ regex ดักจับและบันทึกไว้ใน
notmatch_tag
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
for string in html_tags:
# Complete the regex and find if it matches a closed HTML tags
match_tag = re.match(____"<____>.*?", ____)
if match_tag:
# If it matches print the first group capture
print("Your tag {} is closed".format(match_tag.____(____)))
else:
# If it doesn't match capture only the tag
notmatch_tag = re.match(____"<____>", ____)
# Print the first group capture
print("Close your {} tag!".format(notmatch_tag.____(____)))