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

ทางเลือกนิพจน์ทั่วไปทำงานใน Python อย่างไร


ทางเลือกและการใช้งาน

ในการใช้งานจริง เรามักใช้นิพจน์ทั่วไปที่ตรงกับทางเลือกหนึ่งในสองทางเลือกหรือมากกว่า นอกจากนี้ บางครั้งเราใช้ตัวระบุปริมาณเพื่อนำไปใช้กับนิพจน์ต่างๆ เป้าหมายดังกล่าวทั้งหมดทำได้โดยการจัดกลุ่มด้วยวงเล็บ และในการใช้ทางเลือกอื่น ให้ใช้การสลับกับแถบแนวตั้ง (|)

การใช้แถบแนวตั้ง(|)

Alternation มีประโยชน์เมื่อเราต้องการจับคู่ทางเลือกต่างๆ ตัวอย่างเช่น regex airways|airplane|bomber จะจับคู่ข้อความที่มี airways หรือ airplane หรือ bomber ทำได้เช่นเดียวกันโดยใช้ regex air(ways|plane)|bomber.

หากเราใช้ regex (airways|airplane|bomber) มันจะจับคู่นิพจน์ใดในสามนิพจน์ พิจารณา regex (อากาศ(ทาง|ระนาบ)|เครื่องบินทิ้งระเบิด) ซึ่งมีการจับภาพสองรายการหากนิพจน์แรกตรงกัน (การบินหรือเครื่องบินเป็นการดักครั้งแรกและวิธีหรือเครื่องบินเป็นการดักจับครั้งที่สอง) และการจับหนึ่งครั้งหากนิพจน์ที่สองตรงกัน ( เครื่องบินทิ้งระเบิด) เราสามารถปิดเอฟเฟกต์การจับภาพได้โดยทำตามวงเล็บเปิดด้วย ?:ดังนี้:

(อากาศ(?:วิธี|เครื่องบิน)|เครื่องบินทิ้งระเบิด)

จะมีการจับเพียงครั้งเดียวหากตรงกัน (สายการบินหรือเครื่องบินหรือเครื่องบินทิ้งระเบิด)

ตัวอย่าง

โค้ดต่อไปนี้แสดงประเด็นที่กล่าวถึงข้างต้น -

import re
s = 'airways aircraft airplane bomber'
result = re.findall(r'(airways|airplane|bomber)', s)
print result
result2 = re.findall(r'(air(ways|plane)|bomber)', s)
print result2
result3 = re.findall(r'(air(?:ways|plane)|bomber)', s)
print result3

ผลลัพธ์

สิ่งนี้ให้ผลลัพธ์

['airways', 'airplane', 'bomber']
[('airways', 'ways'), ('airplane', 'plane'), ('bomber', '')]
['airways', 'airplane', 'bomber']