Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีจับคู่รูปแบบและสตริงโดยใช้โมดูล RegEx ใน Python


แนะนำตัว

โมดูล RegEx ย่อมาจากนิพจน์ทั่วไป หากคุณเคยทำงานเกี่ยวกับการเขียนโปรแกรมมาก่อน คุณจะเจอคำนี้มาหลายครั้งแล้ว เราใช้นิพจน์ทั่วไปเพื่อค้นหาและแทนที่ ซึ่งใช้ในโปรแกรมแก้ไขข้อความ เครื่องมือค้นหา โปรแกรมประมวลผลคำ ฯลฯ

กล่าวอีกนัยหนึ่งคือช่วยจับคู่รูปแบบที่คุณต้องการ

ตัวอย่างที่ดีคือเว็บไซต์คอลลาจของคุณอนุญาตให้คุณใช้เฉพาะจดหมายของมหาวิทยาลัยเท่านั้น และไม่มีส่วนขยายอื่นๆ

เริ่มต้นใช้งาน

โมดูลนิพจน์ทั่วไปรวมอยู่ใน Python คุณไม่จำเป็นต้องดาวน์โหลดและติดตั้งแยกต่างหาก

เพื่อเริ่มเข้าถึงเนื้อหา เราต้องนำเข้าโมดูลก่อน ในการนำเข้าโมดูล RegEx เราใช้

นำเข้าอีกครั้ง

สำรวจฟังก์ชันต่างๆ

โมดูล RegEx มาพร้อมกับฟังก์ชันมากมาย และจำเป็นต้องเข้าใจและทราบความแตกต่างระหว่างแต่ละฟังก์ชัน

กล่าวถึงด้านล่างเป็นฟังก์ชันสำคัญบางส่วนที่คุณจะใช้อย่างแน่นอนที่สุดเมื่อคุณเริ่มทำงานในโครงการ Python

ตัวอย่าง

re.compile(pattern, flags) #Compiles the pattern to bematchedre.search(pattern, string, flags) #Searches through the string for matchre.match(pattern, string, flags) #ตรวจสอบว่ามี จับคู่ระหว่างรูปแบบและ stringre.split(รูปแบบ, สตริง, สูงสุด, ธง) #แยกสตริงตามรูปแบบที่จัดเตรียมไว้re.findall(รูปแบบ, สตริง, ธง) #พิมพ์การแข่งขันทั้งหมดที่พบโดยใช้ patternre.finditer(รูปแบบ, สตริง, flags) #Returns the string เป็น iterable objectre.sub(pattern, repl, string, count) #Replaces the string with the patternre.subn(pattern, repl, string, count) #ทำสิ่งเดียวกันกับ re.sub แต่กลับ มันอยู่ใน tuple(string and count)re.escape(pattern) #Escapes อักขระทั้งหมดที่ไม่ใช่อักขระ ascii

re.compile และ re.match ฟังก์ชั่น

ให้เราใช้สตริงพูดว่า "สวัสดีชาวโลก" ตอนนี้ ให้เราดูว่าสตริงด้านบนมีอยู่ในสตริง "สวัสดีชาวโลก! เป็นยังไงบ้าง”

ในการดำเนินการนี้ เราใช้ฟังก์ชัน re.compile และ re.match

x =re.compile("Hello world")y =x.match("Hello world! How are things going?")if (y):print("Strings match")else:print("Strings do ไม่ตรงกัน")

ผลลัพธ์

การจับคู่สตริง

หากคุณสงสัยว่าทำไมเราไม่สามารถทำเช่นนี้ได้โดยไม่ต้องใช้ฟังก์ชันคอมไพล์ คุณพูดถูก! เราสามารถทำได้โดยไม่ต้องใช้ฟังก์ชันคอมไพล์

x =re.match("Hello world","Hello world! How are things going?")if (y):print("Strings match")else:print("Strings do not match") 

ผลลัพธ์

การจับคู่สตริง

ฟังก์ชันรี.สปลิต

x =re.split("\W+","Hello,World")print(x)x =re.split("(\W+)","Hello,Worldprint(x)

ผลลัพธ์

['Hello', 'World']['Hello', ',', 'World']

ในตัวอย่างข้างต้น "\W+" โดยทั่วไปหมายถึงเริ่มแยกทางซ้าย และเครื่องหมาย + หมายถึงเดินหน้าต่อไปจนจบ เมื่อครอบคลุมในวงเล็บเหมือนกรณีที่ 2 จะแบ่งและเพิ่มเครื่องหมายวรรคตอนด้วย เช่น ลูกน้ำ

ฟังก์ชัน re.sub และ re.subn

x =re.sub(r"there","World","Hello there. Python is fun.")print(x)x =re.subn(r"there","World","สวัสดี . ไพธอนสนุก สวัสดี")print(x)

ผลลัพธ์

สวัสดีชาวโลก. Python คือความสนุก ('Hello World. Python is fun. Hello World', 2)

ในตัวอย่างข้างต้น re.sub จะตรวจสอบว่ามีคำว่า "มี" อยู่หรือไม่และแทนที่ด้วย "โลก"

ฟังก์ชัน subn ทำสิ่งเดียวกันแต่คืนค่า tuple แทนที่จะเป็นสตริง และยังเพิ่มจำนวนการแทนที่ที่ทำเสร็จแล้วด้วย

ตัวอย่างในโลกแห่งความเป็นจริง

หนึ่งในแอปพลิเคชัน/ตัวอย่างในโลกแห่งความเป็นจริงสำหรับการใช้โมดูล RegEx คือการตรวจสอบรหัสผ่าน

นำเข้า rematching_sequence =r"[0−9]"while(True):x =input("Enter your password :") r =re.search(matching_sequence,x) if (r and len(x)>6 ):print(x + " เป็นรหัสผ่านที่ถูกต้อง") อื่น ๆ:print(x + " ไม่ใช่รหัสผ่านที่ถูกต้อง รหัสผ่านต้องมีอักขระอย่างน้อย 7 ตัวและมีตัวเลขอย่างน้อย 1 ตัว") อินพุต ("กดปุ่ม Enter เพื่อออก ") 

โปรแกรมจะตรวจสอบว่าคุณได้ป้อนรหัสผ่านที่ถูกต้อง (7+ ตัวอักษรอย่างน้อยหนึ่งตัวเลข) หรือไม่

บทสรุป

คุณได้เรียนรู้พื้นฐานของโมดูล RegEx ที่มีอยู่ใน Python และฟังก์ชันต่างๆ ทั้งหมดที่มีอยู่แล้ว

มีฟังก์ชันและการใช้งานมากมายสำหรับโมดูล RegEx หากคุณสนใจ คุณสามารถอ่านเพิ่มเติมจากเอกสารอย่างเป็นทางการได้ที่ https://docs.python.org/3/library/re.html