⊗pyPmRESF 73 of 129 menu

ธงสำหรับสตริง Regular Expression ใน Python

เพื่อกำหนดธงเป็นหนึ่งในพารามิเตอร์ที่ไม่บังคับ สำหรับเมธอดต่างๆ ที่ทำงานกับ Regular Expression จะใช้ไวยากรณ์ต่อไปนี้:

flags=re.ชื่อธง

ธงหลักสำหรับทำงานกับ Regular Expression

ธง จุดประสงค์
re.IGNORECASE ไม่สนใจตัวพิมพ์ใหญ่-เล็กของตัวอักษร
re.DOTALL จุดหมายถึงอักขระใดๆ รวมถึง การขึ้นบรรทัดใหม่
re.I ทำให้การค้นหาไม่คำนึงถึงตัวพิมพ์ใหญ่-เล็ก
re.L ค้นหาคำตามภาษาปัจจุบัน การตีความนี้มีผลกับกลุ่มตัวอักษร (\w และ \W) รวมถึง พฤติกรรมของขอบเขตคำ (\b และ \B)
re.M อักขระ $ ทำการค้นหาที่จุดสิ้นสุดของ สตริงข้อความใดๆ (ไม่ใช่แค่จุดสิ้นสุดของข้อความทั้งหมด) และอักขระ ^ ทำการค้นหาที่จุดเริ่มต้นของ สตริงข้อความใดๆ (ไม่ใช่แค่จุดเริ่มต้นของ ข้อความทั้งหมด)
re.S เปลี่ยนความหมายของจุด (.) ให้ ตรงกันกับอักขระใดๆ รวมถึงบรรทัดใหม่
re.U ตีความตัวอักษรตาม ชุดอักขระ Unicode ธงนี้ส่งผลต่อ พฤติกรรมของ \w, \W, \b, \B ใน Python 3+ ธงนี้ ถูกตั้งค่าโดยค่าเริ่มต้น
re.X อนุญาตให้ใช้ไวยากรณ์ Regular Expression แบบหลายบรรทัด มันจะละเว้นช่องว่างภายใน รูปแบบ (ยกเว้นช่องว่างภายใน เซต [] หรือเมื่อมีการหนีด้วย แบ็กสแลช) และจัดการกับ เครื่องหมาย '#' ที่ไม่ได้หนีเป็นความคิดเห็น

ตัวอย่าง

ด้วยการใช้ธง re.IGNORECASE คุณสามารถ ไม่สนใจตัวพิมพ์ใหญ่-เล็กของตัวอักษรได้ มาดูกันว่า ทำอย่างไร ในตัวอย่างนี้ Regular Expression จะค้นหาเฉพาะตัวพิมพ์เล็ก:

txt = 'aaa bbb CCC DDD' res = re.sub('[a-z]+', '!', txt) print(res)

ผลลัพธ์จากการรันโค้ด:

'! ! CCC DDD'

ตัวอย่าง

และตอนนี้ เพิ่มธง re.IGNORECASE ลงในพารามิเตอร์ที่สี่ ของเมธอด และ Regular Expression จะเริ่มค้นหาอักขระในทุกตัวพิมพ์:

txt = 'aaa AAA bbb BBB' res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE) print(res)

ผลลัพธ์จากการรันโค้ด:

'! ! ! !'

ตัวอย่าง

มาหาบรรทัดใหม่ทั้งหมดด้วย Regular Expression กัน:

txt = '''aaa bbb''' res = re.sub('\n', '!', txt) print(res)

ผลลัพธ์จากการรันโค้ด:

'aaa!bbb'

ตัวอย่าง

แต่ถ้าต้องการแทนที่อักขระทั้งหมดจริงๆ การใส่จุดใน Regular Expression จะไม่จับ บรรทัดใหม่:

txt = '''aaa bbb''' res = re.sub('.', '!', txt) print(res)

ผลลัพธ์จากการรันโค้ด:

'!!! !!!'

ตัวอย่าง

เพื่อแก้ไขข้อผิดพลาดนี้ ควร ใช้ธง re.DOTALL:

res = re.sub('.', '!', txt, flags=re.DOTALL) print(res)

ผลลัพธ์จากการรันโค้ด:

'!!!!!!!'

ตัวอย่าง

ในพารามิเตอร์สามารถส่งผ่านได้หลาย ธง โดยใส่โอเปอเรเตอร์ + ระหว่างธง เริ่มต้นด้วยการแทนที่ตัวอักษร 'a' ที่ท้ายสตริง:

txt = ''' aaa AAA aaa''' res = re.sub('aaa , '!', txt) print(res)

ผลลัพธ์จากการรันโค้ด:

''' aaa AAA ! '''

ตัวอย่าง

ตอนนี้ใส่ธง re.M:

res = re.sub('aaa , '!', txt, flags=re.M) print(res)

ผลลัพธ์จากการรันโค้ด:

''' ! AAA ! '''

ตัวอย่าง

ตอนนี้ลองใช้ธงสำหรับ ไม่สนใจตัวพิมพ์ใหญ่-เล็กด้วย:

res = re.sub('aaa , '!', txt, flags=re.M+re.IGNORECASE) print(res)

ผลลัพธ์จากการรันโค้ด:

''' ! ! ! '''
ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ