regex รูปแบบเต็มคือนิพจน์ทั่วไป เป็นคุณลักษณะที่สำคัญของภาษาการเขียนโปรแกรมใดๆ เป็นรูปแบบสตริงที่ใช้ในการจับคู่ ค้นหา หรือแทนที่สตริงในค่าสตริง รูปแบบ regex สามารถใช้ในสคริปต์ Python ได้โดยใช้โมดูล “re” ของ Python โมดูลนี้มีฟังก์ชันหลายประเภทสำหรับดำเนินการกับสตริงที่แตกต่างกัน มีการใช้อักขระเมตาและลำดับพิเศษที่แตกต่างกันเพื่อกำหนดรูปแบบ regex เพื่อค้นหาหรือแทนที่งาน วัตถุประสงค์ของการใช้อักขระเมตา ลำดับพิเศษ และวิธีการ regex ที่ใช้กันทั่วไปในสคริปต์ Python แสดงอยู่ในบทช่วยสอนนี้
เมตาอักขระบางตัวที่ใช้กันทั่วไปใน regex:
ตัวละคร | วัตถุประสงค์ |
'+' | ใช้เพื่อจับคู่อักขระหนึ่งหรือหลายรายการในสตริง |
'*' | ใช้เพื่อจับคู่อักขระเฉพาะในสตริงตั้งแต่ศูนย์ขึ้นไป |
'?' | ใช้เพื่อจับคู่อักขระเฉพาะในสตริงเป็นศูนย์หรือหนึ่งรายการ |
'^' | ใช้เพื่อจับคู่อักขระหรือสตริงเฉพาะที่จุดเริ่มต้นของสตริง |
'$' | ใช้เพื่อจับคู่อักขระหรือสตริงเฉพาะที่ส่วนท้ายของสตริง |
'|' | ใช้เพื่อจับคู่สตริงหลายรายการในสตริง มันทำงานเหมือนตรรกะหรือ |
'[]' | ใช้เพื่อจับคู่ช่วงของอักขระ |
'{}' | ใช้เพื่อจับคู่อักขระตามจำนวนที่กำหนด |
ลำดับพิเศษบางอย่างที่ใช้กันทั่วไปใน regex:
ลำดับ | วัตถุประสงค์ |
'\เอ' | ใช้เพื่อจับคู่อักขระเฉพาะที่จุดเริ่มต้นของสตริง มันทำงานเหมือนอักขระ “^” |
'\b', '\B' | “\b” ใช้เพื่อจับคู่สตริงที่มีอักขระหรือคำเฉพาะที่จุดเริ่มต้นหรือจุดสิ้นสุดของสตริง “\B” ทำงานตรงข้ามกับ “\b” |
'\d', '\D' | “\d” ใช้เพื่อจับคู่เลขทศนิยมในสตริงที่คล้ายกับ “[0-9]” “\D” ทำงานตรงข้ามกับ “\d” |
'\s', '\S' | “\s” ใช้เพื่อจับคู่ช่องว่างในสตริงที่คล้ายกับ “[\n\t\r\v]” “\S” ทำงานตรงข้ามกับ “\s” |
'\w', '\W' | “\w” ใช้เพื่อจับคู่อักขระตัวอักษรและตัวเลขในสตริง “\W” ทำงานตรงข้ามกับ “\w” |
'\กับ' | ใช้เพื่อจับคู่อักขระเฉพาะที่ส่วนท้ายของสตริง มันทำงานเหมือนกับอักขระ “$” |
ตัวอย่างที่ 1: จับคู่สตริงโดยใช้ฟังก์ชัน Match()
ฟังก์ชัน match() ใช้เพื่อจับคู่รูปแบบ regex ที่จุดเริ่มต้นของสตริง ไวยากรณ์ของฟังก์ชันนี้ได้รับดังนี้:
ไวยากรณ์:
จับคู่ใหม่ ( รูปแบบ, ธง = 0 )
ในที่นี้ อาร์กิวเมนต์แรกใช้เพื่อกำหนดรูปแบบ regex อาร์กิวเมนต์ที่สองใช้เพื่อกำหนดสตริงหลัก อาร์กิวเมนต์ที่สามเป็นทางเลือกและใช้เพื่อกำหนดแฟล็กประเภทต่างๆ
สร้างไฟล์ Python ด้วยสคริปต์ต่อไปนี้ที่ตรงกับรูปแบบ regex ด้วยสตริงที่กำหนดโดยใช้ฟังก์ชัน match() ขั้นแรก จะใช้รูปแบบ regex ที่กำหนดเพื่อจับคู่ ถัดไป คำค้นหาจะถูกดึงมาจากผู้ใช้และใช้เป็นรูปแบบ regex เพื่อจับคู่กับค่าสตริง หากพบรายการที่ตรงกัน คำค้นหาจะถูกพิมพ์ มิฉะนั้น ระบบจะพิมพ์สตริง “ไม่พบค่าที่ตรงกัน”
#นำเข้าโมดูลที่จำเป็นนำเข้าอีกครั้ง
#กำหนดฟังก์ชันเพื่อพิมพ์ผลลัพธ์ที่ตรงกัน
def matchString ( ) : :
#ตรวจสอบค่าที่ส่งคืนของฟังก์ชัน match()
ถ้า พร้อมด้วย ! = ไม่มี:
พิมพ์ ( ''' + mat.group ( ) + '' พบได้ใน '' + ค่าstrValue + ''' )
อื่น:
พิมพ์ ( 'ไม่พบค่าที่ตรงกัน' )
#กำหนดค่าสตริง
strValue = 'เข้าก่อนออกก่อน'
#จับคู่สายตามรูปแบบ
mat = จับคู่ใหม่ ( '^ก่อนอื่น' , strValue )
#ฟังก์ชั่นการโทรพิมพ์ผลการแข่งขัน
matchString ( )
#เอาสตริงการค้นหา
ในค่า = อินพุต ( 'ป้อนค่าการค้นหา:' )
mat = จับคู่ใหม่ ( ในค่า + , strValue )
#ฟังก์ชั่นการโทรพิมพ์ผลการแข่งขัน
matchString ( )
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นสำหรับค่าอินพุต 'แรก':
ตัวอย่างที่ 2: ค้นหาสตริงโดยใช้ฟังก์ชัน Findall()
ฟังก์ชัน findall() ใช้เพื่อส่งคืนคำที่ตรงกันทั้งหมดที่พบในสตริงหลักเป็นรูปแบบทูเพิล
ไวยากรณ์:
ค้นหาอีกครั้ง ( รูปแบบ, ธง = 0 )
ในที่นี้ อาร์กิวเมนต์แรกใช้เพื่อกำหนดรูปแบบ regex อาร์กิวเมนต์ที่สองใช้เพื่อกำหนดสตริงหลัก อาร์กิวเมนต์ที่สามเป็นทางเลือกและใช้เพื่อกำหนดแฟล็กประเภทต่างๆ
สร้างไฟล์ Python ด้วยสคริปต์ต่อไปนี้ซึ่งรับค่าสตริงหลักและค่าสตริงการค้นหาจากผู้ใช้ จากนั้น ใช้คำค้นหาในรูปแบบ regex เพื่อค้นหาคำค้นหาในสตริงหลัก จำนวนรายการที่ตรงกันทั้งหมดจะถูกพิมพ์ลงในเอาต์พุต
#นำเข้าโมดูลที่จำเป็นนำเข้าอีกครั้ง
#รับค่าสตริง
ในค่า = อินพุต ( 'ป้อนสตริง:' )
#ใช้คำค้นหา
srcValue = อินพุต ( 'ป้อนคำค้นหา:' )
#ค้นหาคำในสตริง
srcResult = ค้นหาอีกครั้ง ( srcValue + '\ใน*' , ในมูลค่า )
#พิมพ์ผลการค้นหา
พิมพ์ ( 'คำ '' +srcValue+ พบ '' ในสตริง '
+ STR ( เท่านั้น ( srcผลลัพธ์ ) ) + 'ครั้ง' )
ตามผลลัพธ์ คำค้นหา 'กิน' จะพบสองครั้งในสตริงหลัก 'เรากินเพื่ออยู่และไม่ได้อยู่เพื่อกิน'
ตัวอย่างที่ 3: ค้นหาสตริงโดยใช้ฟังก์ชัน Search()
search() เป็นอีกฟังก์ชันหนึ่งในการค้นหารูปแบบเฉพาะในค่าสตริง มันมีอาร์กิวเมนต์เดียวกันกับฟังก์ชัน match() และ findall() สร้างไฟล์ Python ด้วยสคริปต์ต่อไปนี้ที่ค้นหาคำว่า 'Python' ในค่าสตริงที่จะนำมาจากผู้ใช้ หากมีคำค้นหาอยู่ในค่าที่ป้อน ข้อความแสดงความสำเร็จจะถูกพิมพ์ มิฉะนั้น ข้อความแจ้งข้อผิดพลาดจะถูกพิมพ์ออกมา
#นำเข้าโมดูลใหม่นำเข้าอีกครั้ง
#รับค่าสตริง
ในค่า = อินพุต ( 'ป้อนสตริง:' )
#ค้นหาคำเฉพาะในค่าสตริง
srcResult = ค้นหาใหม่ ( ร 'หลาม\w*' , ในมูลค่า )
#ตรวจสอบคำค้นหาว่าพบหรือไม่
ถ้า src ผลลัพธ์:
พิมพ์ ( ''' + srcResult.group ( ) + '' พบได้ใน '' + ในมูลค่า + ''' )
อื่น:
พิมพ์ ( 'ไม่พบสตริงการค้นหา' )
เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากสตริงอินพุตเป็น “ฉันชอบการเขียนโปรแกรม Python”:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหากสตริงอินพุตคือ “ฉันชอบการเขียนโปรแกรม PHP”:
ตัวอย่างที่ 4: แทนที่สตริงโดยใช้ฟังก์ชันย่อย ()
ฟังก์ชันย่อย () ใช้เพื่อค้นหาสตริงเฉพาะตามรูปแบบและแทนที่ด้วยคำอื่น ไวยากรณ์ของฟังก์ชันนี้ได้รับดังนี้:
ไวยากรณ์:
รีซับ ( รูปแบบ, แทนที่_สตริง, main_string )
อาร์กิวเมนต์แรกของฟังก์ชันนี้มีรูปแบบที่ใช้ในการค้นหาสตริงเฉพาะในสตริงหลัก
อาร์กิวเมนต์ที่สองของฟังก์ชันนี้ประกอบด้วยค่าสตริง 'แทนที่'
อาร์กิวเมนต์ที่สามของฟังก์ชันนี้มีสตริงหลัก
ฟังก์ชันนี้จะส่งคืนสตริงที่ถูกแทนที่หากมีคำที่ตรงกันอยู่ในสตริงหลักตามอาร์กิวเมนต์แรก
สร้างไฟล์ Python ด้วยสคริปต์ต่อไปนี้ซึ่งจะค้นหาตัวเลขสองหลักที่ท้ายสตริง หากสตริงมีตัวเลขสองหลักต่อท้าย ตัวเลขจะถูกแทนที่ด้วยสตริง “$50”
#นำเข้าโมดูลใหม่นำเข้าอีกครั้ง
#กำหนดสตริงหลัก
strValue = 'ราคาหนังสือ 70'
#กำหนดรูปแบบการค้นหา
รูปแบบ = '[0-9]{2}'
#กำหนดค่าทดแทน
แทนที่ค่า = '50 ดอลลาร์'
#Search และแทนที่สตริงตามรูปแบบ
modified_strValue = re.sub ( รูปแบบ, แทนที่ค่า, strValue )
#Print ค่าสตริงดั้งเดิมและที่แก้ไข
พิมพ์ ( 'สตริงดั้งเดิม:' + ค่า str )
พิมพ์ ( 'สตริงที่แก้ไข:' + modified_strValue )
เอาท์พุท:
มี 70 ที่ปลายสายหลัก ดังนั้น 70 จะถูกแทนที่ด้วย $50 ในสตริงที่ถูกแทนที่
ตัวอย่างที่ 5: แทนที่สตริงโดยใช้ฟังก์ชัน Subn()
ฟังก์ชัน subn() ทำงานเหมือนกับฟังก์ชัน sub() ยกเว้นว่าจะส่งกลับเอาต์พุตเป็นทูเพิล โดยที่ดัชนีแรกมีค่าที่ถูกแทนที่ และดัชนีที่สองมีจำนวนรายการที่ตรงกันทั้งหมด
สร้างไฟล์ Python ด้วยสคริปต์ต่อไปนี้ซึ่งจะค้นหาตัวอักษร A ถึง L ในสตริง “LinuxHint.com” โดยใช้ฟังก์ชัน subn():
#นำเข้าโมดูลใหม่นำเข้าอีกครั้ง
#กำหนดสตริงหลัก
strValue = 'LinuxHint.com'
#กำหนดรูปแบบการค้นหา
รูปแบบ = '[ไปที่]'
#กำหนดค่าทดแทน
แทนที่ค่า = '*'
#Search และแทนที่สตริงตามรูปแบบ
modified_strValue = re.subn ( รูปแบบ, แทนที่ค่า, strValue )
#Print สตริงต้นฉบับและเอาต์พุตของ subn()
พิมพ์ ( “สตริงดั้งเดิม: \n ' + ค่า str )
พิมพ์ ( 'ผลลัพธ์ของฟังก์ชัน subn(): ' )
พิมพ์ ( modified_strValue )
เอาท์พุท:
ตามผลลัพธ์ต่อไปนี้ อักขระ 'L' และ 'H' จะถูกแทนที่ด้วยอักขระ '*'
ตัวอย่างที่ 6: แยกสตริงโดยใช้ฟังก์ชัน Split()
สร้างไฟล์ Python ด้วยสคริปต์ต่อไปนี้ซึ่งใช้ฟังก์ชัน split() เพื่อแบ่งสตริงหลักออกเป็นหลายส่วนตามรูปแบบ regex:
#นำเข้าโมดูลใหม่นำเข้าอีกครั้ง
#กำหนดค่าสตริง
strVal = 'รูปา อัคเตอร์;นิรา เชาดูรี;มาซารุล อิสลาม'
#กำหนดรูปแบบที่จะใช้แยกข้อมูล
รูปแบบ = '[^อา-ซ่า-ซ ]'
#เก็บค่าการแยกไว้ในรายการ
split_result = แยกใหม่ ( รูปแบบ, strVal )
พิมพ์ ( 'ผลลัพธ์ของฟังก์ชัน split():' )
พิมพ์ ( split_result )
เอาท์พุท:
ตามเอาต์พุต สตริงหลักจะถูกแบ่งออกเป็นสามส่วนตามรูปแบบ '[^A-Za-z ]' ที่ใช้ในสคริปต์
บทสรุป
วัตถุประสงค์ของเมตาอักขระ ช่วง และฟังก์ชันในตัว Python ที่ใช้บ่อยที่สุดเพื่อค้นหา แทนที่ และแยกสตริงจะแสดงอยู่ในบทช่วยสอนนี้โดยใช้สคริปต์ Python แบบง่าย