คำสั่ง 'หรือ' ใน Regular Expressions Python

คำสั่ง '|' ซึ่งแสดงถึง ตัวเลือก 'หรือ' ที่ทรงพลังยิ่งกว่า เมื่อเทียบกับคำสั่ง [ ] คำสั่งนี้ อนุญาตให้แบ่ง regular expression ออกเป็นหลายๆ ส่วน โดยที่สิ่งที่ค้นหาอาจตรงกับ ส่วนหนึ่งของ regex หรืออีกส่วนหนึ่งก็ได้ มาดูตัวอย่างกัน

ตัวอย่าง

ในตัวอย่างนี้รูปแบบการค้นหาคือ: ตัวอักษร 'a' สามตัว หรือตัวอักษร 'b' สามตัว:

pythontxt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)

print(res)

ผลลัพธ์การทำงานของโค้ด:

python'! ! abb'

ตัวอย่าง

ในตัวอย่างนี้รูปแบบการค้นหาคือ: ตัวอักษร 'a' สามตัว หรือตั้งแต่ 1 ตัวขึ้นไปของตัวอักษร 'b':

pythontxt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)

print(res)

ผลลัพธ์การทำงานของโค้ด:

python'! ! ! ! axx'

ตัวอย่าง

ในตัวอย่างนี้รูปแบบการค้นหาคือ: ตัวอักษรหนึ่งตัวหรือมากกว่า หรือตัวเลขสามหลัก:

pythontxt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)

print(res)

ผลลัพธ์การทำงานของโค้ด:

python'! ! ! 1 12 !'

ตัวอย่าง

เครื่องหมายเส้นตั้งสามารถแบ่ง regular expression ได้ไม่เพียงสองส่วน แต่สามารถแบ่งเป็นจำนวนเท่าใดก็ได้:

pythontxt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)

print(res)

ผลลัพธ์การทำงานของโค้ด:

python'! ! ! ddd'

ตัวอย่าง

หากเครื่องหมายเส้นตั้งอยู่ภายในวงเล็บ คำสั่ง 'หรือ' จะทำงาน เฉพาะภายในวงเล็บเหล่านั้น

ตัวอย่าง ลองค้นหาสตริงตาม รูปแบบต่อไปนี้: เริ่มต้นด้วย 'a' หรือ 'b' หนึ่งครั้งหรือมากกว่า จากนั้นตามด้วยตัวอักษร 'x' สองตัว:

pythontxt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)

print(res)

ผลลัพธ์การทำงานของโค้ด:

python'! ! ! exx'

โจทย์ฝึกปฏิบัติ

Задание 1

กำหนดสตริง:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

เขียน regular expression ที่จะค้นหาสตริง ตามรูปแบบ: ที่ขอบทั้งสองด้านเป็นตัวอักษร 'a' และระหว่างนั้น - เป็นตัวอักษร 'e' จำนวนกี่ครั้งก็ได้ หรือตัวอักษร 'x' จำนวนกี่ครั้งก็ได้

Задание 2

กำหนดสตริง:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

เขียน regular expression ที่จะค้นหาสตริง ตามรูปแบบ: ที่ขอบทั้งสองด้านเป็นตัวอักษร 'a' และระหว่างนั้น - เป็นตัวอักษร 'e' สองครั้ง หรือตัวอักษร 'x' จำนวนกี่ครั้งก็ได้