Python RegEx

RegEx หรือ แบบแสดงมาตรฐานตรวจสอบคือตัวอักษรที่ใช้ในการสร้างโมดูลที่ต้องการค้นหา

RegEx สามารถใช้เพื่อตรวจสอบว่าตัวอักษรสายความหมายหรือไม่มีโมดูลที่ต้องการค้นหา

RegEx

Python มีโมดูลที่ชื่อ re Python ภาษาในแนวทางเดียวกัน ซึ่งสามารถใช้ในการจัดการ Regular Expression

import re มอดูล

import re

Python ภาษาแปลงฟอร์มแบบ RegEx

import re หลังจากนำมอดูลเข้ามาใช้ ก็สามารถเริ่มใช้ Regular Expression แล้ว

ตัวอย่าง

ตรวจสอบคำว่าเพื่อดูว่ามันเริ่มต้นด้วย "China" และสิ้นสุดด้วย "country"

import re
txt = "China is a great country"
x = re.search("^China.*country$", txt)

ปฏิบัติตัวอย่าง

RegEx ฟังก์ชัน

re มอดูลได้ให้เราใช้ฟังก์ชันเพื่อหาคำว่าที่ตรงกัน

ฟังก์ชัน รายละเอียด
findall คืนรายการที่มีการตรวจสอบทุกครั้ง
search ถ้ามีการตรวจสอบที่ตรงกันกับคำว่าในทุกตำแหน่งของคำว่า ก็จะคืนค่าวัตถุ Match
split คืนค่ารายการที่แบ่งจากคำว่าในการตรวจสอบทุกครั้ง
sub แทนที่คำว่าที่ตรงกันกับคำว่าที่มีความหมายเฉพาะ

元字符

ตัวอักษรเฉพาะหมายเฉพาะคือตัวอักษรที่มีความหมายเฉพาะ

ตัวอักษร รายละเอียด ตัวอย่าง TIY
[] กลุ่มตัวอักษร "[a-m]" ลองด้วยตัวเอง
\ ตัวตัวเฉพาะที่มีความหมายเฉพาะ (ก็สามารถใช้สำหรับการหลีกเลี่ยงตัวเฉพาะ) "\d" ลองด้วยตัวเอง
. ตัวอักษรที่แทนที่ด้วยเฉพาะ (ยกเว้นบรรทัดใต้) "he..o" ลองด้วยตัวเอง
^ เริ่มต้นด้วย "^hello" ลองด้วยตัวเอง
$ สิ้นสุดด้วย "world$" ลองด้วยตัวเอง
* เกิดขึ้นเป็นครั้งแรกหรือหลายครั้ง "aix*" ลองด้วยตัวเอง
+ เกิดขึ้นหนึ่งครั้งหรือหลายครั้ง "aix+" ลองด้วยตัวเอง
{} ออกแบบให้แสดงความหมายของจำนวนที่ระบุ "al{2}" ลองด้วยตัวเอง
| โดยแบบเลือกทั้งสอง "falls|stays" ลองด้วยตัวเอง
() 捕获和分组

特殊序列

ตัวตัวเฉพาะที่มีความหมายเฉพาะ \ หลังจากตัวอักษรดังนี้ จะมีความหมายเฉพาะ

ตัวอักษร รายละเอียด ตัวอย่าง TIY
\A ถ้าตัวอักษรที่กำหนดตั้งอยู่ที่ต้นของคำว่า ก็จะคืนค่าที่ตรงกัน "\AThe" ลองด้วยตัวเอง
\b คืนค่าที่ตรงกัน ซึ่งตัวอักษรที่กำหนดตั้งอยู่ตั้งอยู่ที่ต้นคำว่าหรือท้ายคำว่า r"\bain"
r"ain\b"
ลองด้วยตัวเอง
ลองด้วยตัวเอง
\B คืนค่าที่ตรงกัน ซึ่งตัวอักษรที่กำหนดตั้งอยู่มีอยู่ แต่ไม่ตั้งอยู่ที่ต้นคำว่า (หรือท้ายคำว่า) r"\Bain"
r"ain\B"
ลองด้วยตัวเอง
ลองด้วยตัวเอง
\d คืนค่าที่ตรงกัน ซึ่งคำว่ามีตัวเลข (ตัวเลข 0-9) "\d" ลองด้วยตัวเอง
\D คืนค่าที่ตรงกัน ซึ่งคำว่าไม่มีตัวเลข "\D" ลองด้วยตัวเอง
\s คืนค่าที่ตรงกัน ซึ่งคำว่ามีอักษรเปลว "\s" ลองด้วยตัวเอง
\S คืนค่าที่ตรงกัน ซึ่งคำว่าไม่มีอักษรเปลว "\S" ลองด้วยตัวเอง
\w คืนค่าที่ตรงกัน ซึ่งคำว่ามีตัวอักษรภาษาอังกฤษใดๆ
ตัวอักษร (จาก a ถึง Z) ตัวเลข (จาก 0 ถึง 9) และตัวอักษรใต้สระ _
"\w" ลองด้วยตัวเอง
\W คืนค่าที่ตรงกัน ซึ่งคำว่าไม่มีตัวอักษรภาษาอังกฤษใดๆ "\W" ลองด้วยตัวเอง
\Z ถ้าตัวอักษรที่กำหนดตั้งอยู่ที่ท้ายของคำว่า ก็จะคืนค่าที่ตรงกัน "Spain\Z" ลองด้วยตัวเอง

集合(Set)

ชุด (Set) คือคู่ของวงเปิดที่มีความหมาย [] เป็นกลุ่มตัวอักษรที่มีความหมายพิเศษภายใน

ชุด รายละเอียด ลองด้วยตัวเอง
[arn] กลับค่าตัวอักษรที่มีอยู่ในตัวอักษรที่ระบุ (a, r, n) หนึ่งในนั้น ลองด้วยตัวเอง
[a-n] กลับค่าตัวอักษรตัวเล็กที่อยู่ระหว่างตัวอักษร a และ n ลองด้วยตัวเอง
[^arn] กลับค่าตัวอักษรที่ไม่ได้เป็น a, r, n ลองด้วยตัวเอง
[0123] กลับค่าตัวเลขที่มีอยู่ในตัวเลขที่ระบุ (0, 1, 2, 3) ลองด้วยตัวเอง
[0-9] กลับค่าตัวเลขที่อยู่ระหว่าง 0 ถึง 9 ลองด้วยตัวเอง
[0-5][0-9] กลับค่าตัวเลขที่อยู่ระหว่าง 0 ถึง 9 ลองด้วยตัวเอง
[a-zA-Z] กลับค่าตัวอักษรที่อยู่ระหว่างตัวอักษร a และ z ทั้งหมด ตัวเล็กหรือตัวใหญ่ ลองด้วยตัวเอง
[+] ในชุด ระบุ +, *, ., |, (), $, {} ไม่มีความหมายพิเศษ ดังนั้น [+] หมายถึง ลองด้วยตัวเอง

ฟังก์ชัน findall()

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

ตัวอย่าง

แสดงรายการที่ตรงกันข้ามทั้งหมด

import re
str = "China is a great country"
x = re.findall("a", str)
print(x)

ปฏิบัติตัวอย่าง

รายการนี้มีการตรงกันข้ามที่ถูกหาได้ในลำดับที่

หากไม่พบการตรงกันข้าม กลับค่าคือรายการว่าง

ตัวอย่าง

หากไม่พบการตรงกันข้าม กลับค่าคือรายการว่าง

import re
str = "China is a great country"
x = re.findall("USA", str)
print(x)

ปฏิบัติตัวอย่าง

ฟังก์ชัน search()

search() ฟังก์ชันค้นหาตัวอักษรที่ตรงกันข้ามในข้อความ หากมีการตรงกันข้าม กลับค่าคืออนุตัวเอกสาร Match

หากมีการตรงกันข้ามหลายครั้ง กลับค่าเพียงค่าตรงกันข้ามแรกเท่านั้น

ตัวอย่าง

ค้นหาตัวอักษรช่องว่างแรกในข้อความ

import re
str = "China is a great country"
x = re.search("\s", str)
print("ตำแหน่งของตัวอักษรช่องว่างแรกคือ:\n", x.start())

ปฏิบัติตัวอย่าง

หากไม่พบค่าที่ตรงกัน กลับค่าคือ None:

ตัวอย่าง

ค้นหาโดยไม่กลับค่ามิใช่ค่าที่ตรงกัน

import re
str = "China is a great country"
x = re.search("USA", str)
print(x)

ปฏิบัติตัวอย่าง

ฟังก์ชัน split()

split() ฟังก์ชันกลับค่าคือรายการที่ข้อความถูกแยกทุกครั้งที่พบ

ตัวอย่าง

แยกข้อความที่มีช่องว่าง

import re
str = "China is a great country"
x = re.split("\s", str)
print(x)

ปฏิบัติตัวอย่าง

คุณสามารถกำหนด maxsplit ตัวแปรเพื่อควบคุมจำนวนการเกิดขึ้น

ตัวอย่าง

แยกข้อความเมื่อเกิดขึ้นครั้งแรกเท่านั้น

import re
str = "China is a great country"
x = re.split("\s", str, 1)
print(x)

ปฏิบัติตัวอย่าง

ฟังก์ชัน sub()

sub() ฟังก์ชันแทนที่ตัวอักษรที่ตรงกันข้ามด้วยข้อความที่คุณเลือก

ตัวอย่าง

ใช้ตัวเลข 9 แทนช่องว่างทุกตัว

import re
str = "China is a great country"
x = re.sub("\s", "9", str)
print(x)

ปฏิบัติตัวอย่าง

คุณสามารถกำหนด count จุดประสงค์ของตัวพักตรง

ตัวอย่าง

แทนความหลากหลาย

import re
str = "China is a great country"
x = re.sub("\s", "9", str, 2)
print(x)

ปฏิบัติตัวอย่าง

อ็ปเจกษ์การตรวจพบ

อ็ปเจกษ์การตรวจพบเป็นอ็ปเจกษ์ที่มีรายละเอียดและผลลัพธ์ของการค้นหา

หมายเหตุ:ถ้าไม่มีการตรวจพบ จะคืนค่า Noneแทน Match อ็ปเจกษ์

ตัวอย่าง

การปฏิบัติจะคืนอ็ปเจกษ์การค้นหา

import re
str = "China is a great country"
x = re.search("a", str)
print(x) # จะพิมพ์อ็ปเจกษ์

ปฏิบัติตัวอย่าง

Match อ็ปเจกษ์มีรายละเอียดและหน้าที่เพื่อเอาความรู้เกี่ยวกับการค้นหาและผลลัพธ์

  • span() ตัวแปรที่คืนค่าเป็นตัวแปรประกอบที่มีตำแหน่งเริ่มต้นและสิ้นสุดของการตรวจพบ
  • .string คืนค่าตัวอักษรที่ใส่สู่ฟังก์ชัน
  • group() คืนค่าส่วนของตัวอักษรที่ตรงกับการค้นหา

ตัวอย่าง

พิมพ์ตำแหน่งที่การตรวจพบแรกปรากฏขึ้น (ตำแหน่งเริ่มต้นและสิ้นสุด)

ค้นหาแบบมาตรฐานที่เริ่มต้นด้วยตัวอักษรใหญ่ "C"

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.span())

ปฏิบัติตัวอย่าง

ตัวอย่าง

พิมพ์ตัวอักษรที่ใส่สู่ฟังก์ชัน

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.string)

ปฏิบัติตัวอย่าง

ตัวอย่าง

พิมพ์ส่วนของตัวอักษรที่ตรงกับการค้นหา

ค้นหาแบบมาตรฐานที่เริ่มต้นด้วยตัวอักษรใหญ่ "C"

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.group())

ปฏิบัติตัวอย่าง

หมายเหตุ:ถ้าไม่มีการตรวจพบ จะคืนค่า Noneแทน Match อ็ปเจกษ์