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

นิพจน์ปกติใน Python พร้อมตัวอย่าง?


นิพจน์ทั่วไปคือชนิดของภาษาโปรแกรมที่ใช้ในการระบุว่ามีรูปแบบอยู่ในลำดับของอักขระที่กำหนด (สตริง) หรือไม่

นิพจน์ทั่วไปหรือ Regex คือลำดับของอักขระที่ใช้ตรวจสอบว่าสตริงมีรูปแบบการค้นหาที่ระบุหรือไม่

โมดูล RegEx

ในการใช้โมดูล RegEx นั้น python มาพร้อมกับแพ็คเกจในตัวที่เรียกว่า re ซึ่งเราต้องทำงานกับนิพจน์ทั่วไป หากต้องการใช้โมดูล RegEx เพียงนำเข้าโมดูลใหม่

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

ตัวอย่าง

import retxt ="การใช้ python ในการเรียนรู้ของเครื่อง"x =re.search("^Use.*Learning$", txt)if (x):print("YES! We have a match!")else:print("ไม่ตรงกัน")

ผลลัพธ์

ใช่! เรามีนัดกัน!

ฟังก์ชัน RegEx

โมดูล re มีฟังก์ชันคู่ที่ช่วยให้เราค้นหาสตริงสำหรับการจับคู่ได้

ฟังก์ชัน
คำอธิบาย
findall
ส่งคืนรายการที่มีการแข่งขันทั้งหมด
ค้นหา
ส่งคืนออบเจกต์ Match หากพบการจับคู่ที่ใดก็ได้ในสตริง
สปลิต
ส่งคืนรายการ โดยที่สตริงถูกแยกออกในแต่ละคณิตศาสตร์
sub
แทนที่หนึ่งหรือหลายรายการที่ตรงกันด้วยสตริง

เมตาคาแรคเตอร์

อักขระเมตาใน RegEx เป็นอักขระที่มีความหมายพิเศษ

ตัวละคร
คำอธิบาย
ตัวอย่าง
[]
ชุดอักขระ
“[a-m]”
\
ส่งสัญญาณลำดับพิเศษ และยังใช้เพื่อหลีกอักขระพิเศษ
“\d”
.
อักขระใดๆ ยกเว้นอักขระขึ้นบรรทัดใหม่
"เขา..โอ"
^
เริ่มต้นด้วย
“^สวัสดี”
$
ลงท้ายด้วย
“โลก$”
*
ไม่มีเหตุการณ์เกิดขึ้นหรือมากกว่า
“เอ๊กซ์*”
+
เกิดขึ้นอย่างน้อยหนึ่งรายการ
“aix+”
{}
จำนวนครั้งที่ระบุไว้
“a|{2}”
|
หรือ
“สั้น | ยาว”
()
จับภาพและจัดกลุ่ม

ลำดับพิเศษ

ลำดับพิเศษใน RegEx คือ \ ตามด้วยหนึ่งในอักขระที่แสดงด้านล่างและมีความหมายพิเศษ -

ตัวละคร
คำอธิบาย
ตัวอย่าง
\A
ส่งคืนการจับคู่หากอักขระที่ระบุอยู่ที่จุดเริ่มต้นของสตริง
“\APyt”
\b
ส่งคืนการจับคู่หากอักขระที่ระบุอยู่ที่จุดเริ่มต้นหรือจุดสิ้นสุดของคำ
r”\bPython” r”world\b”
\B
ส่งคืนการจับคู่หากมีอักขระที่ระบุ แต่ไม่ใช่ที่จุดเริ่มต้น (หรือจุดสิ้นสุด) ของคำ
r”\Bpython” r”World\B”
\d
คืนค่าที่ตรงกันหากสตริงมีตัวเลข
“\d”
\D
คืนค่าที่ตรงกันหากสตริงไม่มีตัวเลข
“\D”
\s
ส่งคืนการจับคู่ที่สตริงมีอักขระช่องว่างสีขาว
“\s”
\S
คืนค่าการจับคู่ที่สตริงไม่มีอักขระช่องว่าง
“\S”
\w
ส่งกลับค่าที่ตรงกันหากสตริงมีอักขระคำใดๆ (อักขระอาจเป็นตัวอักษรจาก a ถึง Z ตัวเลขตั้งแต่ 0-9 และขีดล่าง _ อักขระ
“\w”
\W
ส่งคืนการจับคู่โดยที่สตริงไม่มีอักขระคำใดๆ
“\W”
\Z
ส่งคืนการจับคู่หากอักขระที่ระบุอยู่ที่ส่วนท้ายของสตริง
“โลก\Z”

ชุด

ชุดใน RegEx คือชุดของอักขระภายในวงเล็บเหลี่ยมคู่ [] ซึ่งมีความหมายพิเศษบางอย่าง

ตั้งค่า
คำอธิบาย
[ราช]
ส่งคืนการจับคู่หากมีอักขระตัวใดตัวหนึ่งที่ระบุ (a, r หรือ n) อยู่
[a-r]
ส่งกลับค่าที่ตรงกันสำหรับอักษรตัวพิมพ์เล็ก เรียงตามตัวอักษรระหว่าง a และ r
[^raj]
คืนค่าการจับคู่สำหรับอักขระใดๆ ยกเว้น r, a และ j
[0123]
ส่งคืนการแข่งขันโดยที่ spe . ใด ๆ
[0-9]
ส่งคืนการจับคู่สำหรับตัวเลขใดๆ ระหว่าง 0 ถึง 9
[0-3][0-8]
ส่งคืนการจับคู่สำหรับตัวเลขสองหลักระหว่าง 00 ถึง 38
[a-zA-Z]
คืนค่าการจับคู่ของอักขระใดๆ ที่เรียงตามตัวอักษรระหว่าง a ถึง z หรือ A ถึง Z
[+]
คืนค่าการจับคู่สำหรับอักขระ + ใดๆ ในสตริง

ตัวอย่าง - findall()

ฟังก์ชัน findall() จะคืนค่ารายการที่มีข้อมูลที่ตรงกันทั้งหมด

#Print รายการการแข่งขันทั้งหมด (“ใน”) จาก textimport retxt ="การใช้ python ในการเรียนรู้ของเครื่อง"x =re.findall("in", txt)print(x)

ผลลัพธ์

['in' 'in' 'in']

รายการแสดงผลด้านบนประกอบด้วยรายการที่ตรงกันทั้งหมดตามลำดับที่พบ อย่างไรก็ตาม หากไม่พบรายการที่ตรงกัน รายการว่างจะปรากฏขึ้น

เพียงเปลี่ยนบรรทัดด้านล่างในโปรแกรมด้านบน "รูปแบบ" ซึ่งไม่มีอยู่ในข้อความหรือสตริง

x =re.findall("สวัสดี", txt)

ผลลัพธ์

[]

ตัวอย่าง - ฟังก์ชั่นการค้นหา ()

ฟังก์ชัน search() จะค้นหาสตริงและส่งคืนออบเจกต์ที่ตรงกันหากพบรายการที่ตรงกัน

อย่างไรก็ตาม หากมีการแข่งขันมากกว่าหนึ่งรายการ ระบบจะส่งคืนเฉพาะการแข่งขันครั้งแรกเท่านั้น

import retxt ="Python เป็นหนึ่งในภาษาที่ได้รับความนิยมมากที่สุดในโลก"searchObj =re.search("\s", txt)print("อักขระ white-space ตัวแรกอยู่ในตำแหน่ง:", searchObj. start())

ผลลัพธ์

อักขระช่องว่างตัวแรกอยู่ในตำแหน่ง:6

อย่างไรก็ตาม หากไม่พบรายการที่ตรงกัน จะไม่มีการส่งกลับ

ตัวอย่าง - ฟังก์ชัน split()

ฟังก์ชัน split() ใน RegEx จะส่งกลับรายการที่มีการแยกสตริงในแต่ละการแข่งขัน -

# Split ในแต่ละ white-space characterimport restring ="Python เป็นหนึ่งในภาษาที่ได้รับความนิยมมากที่สุดในโลก"searchObj =re.split("\s", string)print(searchObj)

ผลลัพธ์

['Python', 'is', 'one', 'of', 'the', 'most', 'popular', 'languages', 'around', 'the', 'world'] 

ตัวอย่าง - ฟังก์ชั่นย่อย ()

ฟังก์ชันย่อย () ใน RegEx คือการแทนที่การจับคู่ด้วยข้อความที่คุณเลือก

#Replace ทุกช่องว่างในสตริงด้วย _:import restring ="Python เป็นหนึ่งในภาษาที่ได้รับความนิยมมากที่สุดในโลก"searchObj =re.sub("\s", "_", string)print( searchObj)

ผลลัพธ์

Python_is_one_of_the_most_popular_language_around_the_world

จับคู่วัตถุ

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

ตัวอย่าง - ค้นหาสตริงและส่งคืนวัตถุที่ตรงกัน

import restring ="Python เป็นหนึ่งในภาษาที่ได้รับความนิยมมากที่สุดในโลก"searchObj =re.search("on", string)print(searchObj)

ผลลัพธ์

<_sre.SRE_Match วัตถุ; span=(4, 6), match='on'>

วัตถุที่ตรงกันมีคุณสมบัติและวิธีการที่ใช้เพื่อดึงข้อมูลเกี่ยวกับการค้นหาและผลลัพธ์

  • .span() – ส่งกลับ tuple ที่มีตำแหน่งเริ่มต้นและสิ้นสุดของการแข่งขันที่พบ

  • .string – ส่งกลับสตริงที่ส่งผ่านไปยังฟังก์ชัน

  • .group() – ส่งกลับส่วนของสตริงที่มีการจับคู่

ตัวอย่าง - พิมพ์ส่วนของสตริงที่มีการจับคู่

#ค้นหาคำใดๆ ที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่ “P”:import restring ="Python เป็นหนึ่งในภาษาที่ได้รับความนิยมมากที่สุดในโลก"searchObj =re.search(r"\bP\w+", string )print(searchObj)

ผลลัพธ์

<_sre.SRE_Match วัตถุ; span=(0, 6), match='Python'>