⊗pyPmREHHy 47 of 129 menu

ยัติภังค์ภายในเซ็ตในเรกูลาร์เอกซ์เพรสชันของ Python

ยัติภังค์ก็เป็นสัญลักษณ์พิเศษภายใน [ ] (แต่ภายนอกไม่ใช่) หากคุณต้องการยัติภังค์เองเป็นสัญลักษณ์ - ให้วางมันในตำแหน่งที่มันจะ ไม่ถูกตีความว่าเป็นตัวแบ่งกลุ่ม

เหตุใดจึงสำคัญ: คุณอาจสร้างกลุ่มของสัญลักษณ์ขึ้นมาโดยไม่รู้ตัว ตัวอย่างเช่น แบบนี้ - '[:-@]' - คุณคิดว่าคุณกำลังเลือก colon, ยัติภังค์ และ at sign แต่จริงๆ แล้วมันกลายเป็นกลุ่มของสัญลักษณ์ระหว่าง : และ @ กลุ่มนี้ประกอบด้วยสัญลักษณ์ต่อไปนี้: ? < = > :

พวกมันมาจากไหน? จากตาราง ASCII - colon มีหมายเลขน้อยกว่า at sign - จึงได้กลุ่มออกมา นั่นคือกลุ่มทั้งหมดได้มาจากตาราง ASCII (หากต้องการคุณสามารถใช้คุณสมบัตินี้ได้)

วิธีจัดการกับเรื่องนี้: วางสัญลักษณ์ยัติภังค์ในตำแหน่งที่มันจะไม่ถูกตีความว่าเป็นสัญลักษณ์กลุ่มอย่างแน่นอน เช่น ที่เริ่มต้นหรือที่ท้ายสุด (นั่นคือหลัง [หรือก่อน ])

คุณยังสามารถ escape ยัติภังค์ได้ - แล้วมันจะหมายถึงตัวมันเองโดยไม่ขึ้นกับตำแหน่ง ตัวอย่างเช่น แทนที่จะเขียน [:-@] ให้เขียน [:\-@] - และจะไม่มีกลุ่มอีกต่อไป แต่จะมีสามสัญลักษณ์คือ colon, ยัติภังค์ และ at sign @

ตัวอย่าง

ในตัวอย่างต่อไปนี้แพตเทิร์นการค้นหาคือ: ตัวเลข 1 ตามด้วยตัวอักษรจาก 'a' ถึง 'z' ตามด้วยตัวเลข 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a-z]2', '!', txt) print(res)

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

'! 1-2 ! !'

ตัวอย่าง

คราวนี้มา escape ยัติภังค์กัน ผลลัพธ์แพตเทิร์นการค้นหาคือ: ตัวเลข 1 ตามด้วยตัวอักษร 'a' หรือ ยัติภังค์ หรือตัวอักษร 'z' ตามด้วยตัวเลข 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a\-z]2', '!', txt) print(res)

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

'! ! 1c2 !'

ตัวอย่าง

คุณสามารถแค่ย้ายตำแหน่งยัติภังค์ โดยไม่ต้อง escape มัน:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[az-]2', '!', txt) print(res)

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

'! ! 1c2 !'

ตัวอย่าง

ในตัวอย่างต่อไปนี้แพตเทิร์นการค้นหาคือ: อักขระตัวแรกคือตัวอักษรพิมพ์เล็กหรือ ยัติภังค์ '-' ตามด้วยตัวอักษร 'x' สองตัว:

txt = 'axx Axx -xx @xx' res = re.sub('[a-z-]xx', '!', txt) print(res)

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

'! Axx ! @xx'

ตัวอย่าง

ในตัวอย่างต่อไปนี้แพตเทิร์นการค้นหาคือ: อักขระตัวแรกคือตัวอักษรพิมพ์เล็ก พิมพ์ใหญ่ หรือยัติภังค์ '-' ตามด้วยตัวอักษร 'x' สองตัว:

txt = 'axx Axx -xx @xx' res = re.sub('[a-zA-Z-]xx', '!', txt) print(res)

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

'! ! ! @xx'

ตัวอย่าง

คุณสามารถวางยัติภังค์ไว้ระหว่างสองกลุ่ม - ที่นั่นมันจะไม่สร้างกลุ่มเพิ่มเติมอย่างแน่นอน:

txt = 'axx 9xx -xx @xx' res = re.sub('[a-z-0-9]xx', '!', txt) print(res)

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

'! ! ! @xx'

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

กำหนดสตริง:

txt = 'xaz xBz xcz x-z x@z'

ค้นหาสตริงทั้งหมดตามแพตเทิร์นต่อไปนี้: ตัวอักษร 'x' ตัวอักษรพิมพ์ใหญ่หรือพิมพ์เล็ก หรือยัติภังค์ ตัวอักษร 'z'

กำหนดสตริง:

txt = 'xaz x$z x-z xcz x+z x%z x*z'

ค้นหาสตริงทั้งหมดตามแพตเทิร์นต่อไปนี้: ตัวอักษร 'x' ตามด้วย dollar sign หรือ ยัติภังค์ หรือ plus sign ตามด้วยตัวอักษร 'z'

ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ