กลุ่มตัวอักษรใน Regular Expressions Python
มีคำสั่งพิเศษที่อนุญาตให้เลือกกลุ่มตัวอักษรทั้งหมดได้ในคราวเดียว คำสั่ง \d หมายถึง ตัวเลข
ตั้งแต่ 0 ถึง 9 คำสั่ง \w
หมายถึง ตัวเลข ตัวอักษรละติน หรือเครื่องหมายขีดล่าง คำสั่ง \s หมายถึง
ช่องว่างหรืออักขระว่าง: ช่องว่าง,
ขึ้นบรรทัดใหม่, แท็บ คุณสามารถกลับค่าของ
คำสั่งได้โดยการเขียนตัวพิมพ์ใหญ่:
ตัวอย่างเช่น หาก \d คือตัวเลข แล้ว
\D คือ ไม่ใช่ตัวเลข
ตัวอย่าง
ลองหาตัวเลขทั้งหมด:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'! !! !!!'
ตัวอย่าง
โอเปอเรเตอร์การทำซ้ำถือว่าคำสั่งกลุ่ม
เป็นหนึ่งหน่วย นั่นคือไม่จำเป็นต้องใช้วงเล็บจัดกลุ่ม
ในตัวอย่างถัดไป แพตเทิร์นการค้นหา
มีลักษณะดังนี้: ตัวเลขตั้งแต่ 0 ถึง
9 หนึ่งครั้งหรือมากกว่า:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'! ! ! abc @@@'
ตัวอย่าง
ในตัวอย่างถัดไป แพตเทิร์นการค้นหา
มีลักษณะดังนี้: อะไรก็ได้หนึ่งครั้งหรือมากกว่า,
แต่ไม่ใช่ตัวเลขตั้งแต่ 0 ถึง 9:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'123!3!'
ตัวอย่าง
ในตัวอย่างนี้ แพตเทิร์นการค้นหา มีลักษณะดังนี้: อักขระว่างหนึ่งครั้ง:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'1!12!123!abc!@@@'
ตัวอย่าง
ในตัวอย่างนี้ แพตเทิร์นการค้นหา
มีลักษณะดังนี้: อักขระที่ไม่ใช่อักขระว่างหนึ่งครั้งหรือมากกว่า
สตริงย่อยทั้งหมดที่คั่นด้วย
ช่องว่าง จะถูกแทนที่ด้วย '!':
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'! ! ! ! !'
ตัวอย่าง
ในตัวอย่างนี้ แพตเทิร์นการค้นหา
มีลักษณะดังนี้: ตัวเลขหรือตัวอักษรหนึ่งครั้งหรือมากกว่า
สตริงย่อยทั้งหมดที่ประกอบด้วยตัวเลข
และตัวอักษร จะถูกแทนที่ด้วย '!':
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'! ! ! ! @@@'
ตัวอย่าง
ในตัวอย่างนี้ แพตเทิร์นการค้นหา
มีลักษณะดังนี้: ไม่ใช่ตัวเลขและไม่ใช่ตัวอักษรหนึ่งครั้งหรือมากกว่า
คำจำกัดความนี้ในกรณีของเรา
ตรงกับ '@@@' และช่องว่างทั้งหมด
(พวกมันก็ไม่ใช่ตัวเลขและไม่ใช่ตัวอักษรเช่นกัน)
โปรดสังเกตว่าตอนท้ายมีหนึ่ง
'!' - มันแปลงมาจากสตริง
' @@@' - มีช่องว่างนำหน้า:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'1!12!123!Abc!'
โจทย์ฝึกปฏิบัติ
กำหนดสตริง:
txt = 'a1a a2a a3a a4a a5a aba aca'
เขียน Regular Expression ที่จะค้นหาสตริง,
โดยที่ ด้านข้างมีตัวอักษร 'a',
และระหว่างพวกมันมีหนึ่งตัวเลข
กำหนดสตริง:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
เขียน Regular Expression ที่จะค้นหาสตริง,
โดยที่ ด้านข้างมีตัวอักษร 'a',
และระหว่างพวกมันมีตัวเลขจำนวนเท่าใดก็ได้
กำหนดสตริง:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
เขียน Regular Expression ที่จะค้นหาสตริง,
โดยที่ ด้านข้างมีตัวอักษร 'a',
และระหว่างพวกมันมีตัวเลขจำนวนเท่าใดก็ได้ (รวมถึง
ศูนย์ตัวเลข นั่นคือสตริง
'aa')
กำหนดสตริง:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
เขียน Regular Expression ที่จะค้นหาสตริง
รูปแบบต่อไปนี้: ด้านข้างมีตัวอักษร
'a' และ 'b', และระหว่างพวกมัน -
ไม่ใช่ตัวเลขและไม่ใช่ช่องว่าง
กำหนดสตริง:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
เขียน Regular Expression ที่จะค้นหาสตริง
รูปแบบต่อไปนี้: ด้านข้างมีตัวอักษร
'a' และ 'b', และระหว่างพวกมัน -
ไม่ใช่ตัวอักษร ไม่ใช่ตัวเลข และไม่ใช่ช่องว่าง
กำหนดสตริง:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
เขียน Regular Expression ที่จะแทนที่
ช่องว่างทั้งหมดด้วย '!'