⊗pyPmREHHy 47 of 129 menu

Dấu gạch ngang bên trong tập hợp trong biểu thức chính quy Python

Dấu gạch ngang - cũng là một ký tự đặc biệt bên trong [ ] (còn bên ngoài - thì không). Nếu bạn cần chính dấu gạch ngang như một ký tự - hãy đặt nó ở vị trí mà nó sẽ không bị hiểu là dấu phân cách nhóm.

Tại sao điều này quan trọng: bạn có thể tạo ra một nhóm ký tự mà chính bạn không nhận ra. Ví dụ, như thế này - '[:-@]' - bạn nghĩ rằng bạn đang chọn dấu hai chấm, dấu gạch ngang và dấu @, nhưng thực tế lại tạo thành một nhóm ký tự giữa :@. Nhóm này bao gồm các ký tự sau: ? < = > :

Chúng từ đâu ra? Từ bảng ASCII - dấu hai chấm có số thứ tự nhỏ hơn dấu @ - và kết quả là một nhóm. Tức là tất cả các nhóm được tạo ra dựa trên bảng ASCII (nếu muốn có thể sử dụng điều này).

Cách giải quyết: đặt ký tự dấu gạch ngang ở vị trí mà chắc chắn nó sẽ không bị hiểu là ký tự nhóm, ví dụ, ở đầu hoặc ở cuối (tức là sau [hoặc trước ]).

Cũng có thể escape dấu gạch ngang - khi đó nó sẽ biểu thị chính nó bất kể vị trí. Ví dụ, thay vì [:-@] viết [:\-@] - và sẽ không có nhóm nữa, mà sẽ có ba ký tự - dấu hai chấm, dấu gạch ngang và dấu @ @.

Ví dụ

Trong ví dụ sau, mẫu tìm kiếm như sau: chữ số 1, sau đó là chữ cái từ 'a' đến 'z', sau đó là chữ số 2:

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

Kết quả thực thi mã:

'! 1-2 ! !'

Ví dụ

Bây giờ hãy escape dấu gạch ngang. Kết quả mẫu tìm kiếm như sau: chữ số 1, sau đó là chữ cái 'a', hoặc dấu gạch ngang, hoặc chữ cái 'z', sau đó là chữ số 2:

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

Kết quả thực thi mã:

'! ! 1c2 !'

Ví dụ

Có thể chỉ cần đổi vị trí dấu gạch ngang, không cần escape nó:

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

Kết quả thực thi mã:

'! ! 1c2 !'

Ví dụ

Trong ví dụ tiếp theo, mẫu tìm kiếm như sau: ký tự đầu tiên - là chữ cái thường hoặc dấu gạch ngang '-', sau đó là hai chữ cái 'x':

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

Kết quả thực thi mã:

'! Axx ! @xx'

Ví dụ

Trong ví dụ tiếp theo, mẫu tìm kiếm như sau: ký tự đầu tiên - là chữ cái thường, chữ cái hoa hoặc dấu gạch ngang '-', sau đó là hai chữ cái 'x':

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

Kết quả thực thi mã:

'! ! ! @xx'

Ví dụ

Có thể đặt dấu gạch ngang giữa hai nhóm - ở đó chắc chắn nó sẽ không tạo thêm một nhóm nữa:

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

Kết quả thực thi mã:

'! ! ! @xx'

Bài tập thực hành

Cho chuỗi:

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

Tìm tất cả các chuỗi theo mẫu sau: chữ cái 'x', chữ cái hoa hoặc thường hoặc dấu gạch ngang, chữ cái 'z'.

Cho chuỗi:

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

Tìm tất cả các chuỗi theo mẫu sau: chữ cái 'x', sau đó là dấu đô la, hoặc dấu gạch ngang hoặc dấu cộng, sau đó là chữ cái 'z'.

Tiếng Việt
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ʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối