Cara menggunakan ungkapan biasa Python untuk memadankan rentetan campuran Cina dan Inggeris

WBOY
Lepaskan: 2023-06-22 16:51:03
asal
2390 orang telah melayarinya

Ungkapan biasa ialah alat pemprosesan teks yang berkuasa yang boleh membantu kami memadankan dan menggantikan rentetan dengan cepat. Dalam senario padanan rentetan campuran Cina dan Inggeris, penggunaan ungkapan biasa adalah amat penting. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa Python untuk memadankan rentetan campuran Cina dan Inggeris.

1. Isu pengekodan rentetan

Sebelum memadankan rentetan campuran Cina dan Inggeris, anda perlu memahami isu pengekodan rentetan terlebih dahulu. Dalam versi Python 3.x, rentetan menggunakan pengekodan Unikod secara lalai, yang bermaksud bahawa watak biasanya diwakili oleh pengekodan Unikod dalam Python.

Dalam aplikasi praktikal, disebabkan oleh sebab sejarah dan batasan teknikal, kami sering menghadapi rentetan jenis pengekodan lain. Sebagai contoh, pengekodan rentetan yang digunakan dalam persekitaran Cina biasanya GBK atau UTF-8. Untuk mengendalikan rentetan pengekodan berbeza dengan betul, rentetan itu perlu ditukar kepada pengekodan bersatu sebelum menggunakan ungkapan biasa.

Dalam Python, anda boleh menggunakan kaedah encode() untuk menukar rentetan kepada rentetan bait dengan pengekodan yang ditentukan, contohnya:

str = "中文字符串"
encoded_str = str.encode('utf-8')
Salin selepas log masuk

2. Sintaks ungkapan biasa asas

Apabila menggunakan ungkapan biasa untuk memadankan rentetan campuran Cina dan Inggeris, anda perlu menguasai beberapa sintaks ungkapan biasa asas.

  1. Kelas aksara[]

Kurungan segi empat sama boleh memadankan mana-mana aksara, contohnya:

[abc]  匹配字符a或b或c
[a-z]  匹配小写字母a~z中的任意一个字符
[A-Z]  匹配大写字母A~Z中的任意一个字符
[0-9]  匹配数字0~9中的任意一个字符
Salin selepas log masuk
  1. kedudukan sepadan

^ sepadan dengan permulaan rentetan

$ sepadan dengan hujung rentetan

sepadan dengan sempadan perkataan

  1. kelayakan
    sepadan dengan aksara sebelumnya sifar atau lebih banyak
  • sepadan dengan watak terdahulu satu atau lebih kali
? >

{n,m} sepadan dengan watak sebelumnya sekurang-kurangnya n kali dan paling banyak m masa

{n,} sepadan dengan watak sebelumnya sekurang-kurangnya n kali

{n} sahaja sepadan dengan watak sebelumnya Watak n kali

watak istimewa
  1. Padankan mana-mana watak kecuali watak baris baharu

watak melarikan diri, anda boleh melarikan diri daripada watak berikut Untuk. aksara istimewa

| atau, ia boleh memadankan mana-mana hasil padanan yang berjaya bagi berbilang corak

(), berbilang corak boleh digabungkan untuk membentuk corak yang lebih kompleks

3. Pertempuran praktikal padanan rentetan campuran Cina dan Inggeris

Seterusnya, kami akan menggunakan contoh untuk menunjukkan cara menggunakan ungkapan biasa Python untuk memadankan rentetan campuran Cina dan Inggeris.

Memadankan aksara Inggeris
  1. Pertama, kita perlu memadankan aksara Inggeris tulen. Dalam ungkapan biasa, a-zA-Z bermaksud memadankan semua huruf besar dan huruf kecil, jadi kita hanya perlu menggunakan [a-zA-Z]+ untuk memadankan satu atau lebih aksara Inggeris.

Contohnya, jika kita ingin memadankan aksara Inggeris dalam rentetan "Hello World", kita boleh menggunakan kod berikut:

import re

str = "Hello World"
pattern = '[a-zA-Z]+'
result = re.findall(pattern, str)

print(result)
Salin selepas log masuk

Hasil output ialah: ["Hello", "World "], berjaya memadankan dua perkataan Inggeris.

Padankan aksara Cina
  1. Seterusnya, mari padankan aksara Cina. Memandangkan julat aksara Cina agak luas, kami boleh menggunakan julat pengekodan unikod untuk memadankan aksara Cina. Julat pengekodan unikod bahasa Cina ialah u4e00-u9fa5, jadi kami boleh menggunakan [u4e00-u9fa5]+ untuk memadankan satu atau lebih aksara Cina.

Contohnya, jika kita ingin memadankan aksara Cina dalam rentetan "Hello World", kita boleh menggunakan kod berikut:

import re

str = "你好世界"
pattern = '[u4e00-u9fa5]+'
result = re.findall(pattern, str)

print(result)
Salin selepas log masuk

Hasil output ialah: ["Hello", "World "], Dua perkataan Cina berjaya dipadankan.

Padankan aksara Cina dan Inggeris
  1. Akhir sekali, mari padankan rentetan campuran aksara Cina dan Inggeris. Apabila memadankan rentetan Cina dan Inggeris, anda perlu mempertimbangkan kedua-dua aksara Cina dan Inggeris. Oleh itu, kita boleh menggabungkan corak aksara Cina dan aksara Inggeris untuk membentuk ungkapan biasa berikut:
pattern = '[a-zA-Z]+|[u4e00-u9fa5]+'
Salin selepas log masuk

Ungkapan biasa ini menggunakan simbol | untuk menyambungkan dua corak, yang boleh memadankan satu atau lebih perkataan Inggeris atau bahasa Cina perkataan.

Sebagai contoh, jika kita ingin memadankan perkataan Cina dan Inggeris dalam rentetan "Hello Hello World World", kita boleh menggunakan kod berikut:

import re

str = "Hello 你好 World 世界"
pattern = '[a-zA-Z]+|[u4e00-u9fa5]+'
result = re.findall(pattern, str)

print(result)
Salin selepas log masuk

Hasil output ialah: ["Hello ", "Hello ", "World", "世界"], berjaya memadankan empat perkataan Cina dan Inggeris.

Ringkasan:

Di atas ialah cara menggunakan ungkapan biasa Python untuk memadankan rentetan campuran Cina dan Inggeris. Dengan kaedah di atas, kami boleh menyelesaikan masalah padanan rentetan campuran Cina dan Inggeris dengan mudah dan melaksanakan pemprosesan teks yang lebih cekap dan tepat.

Atas ialah kandungan terperinci Cara menggunakan ungkapan biasa Python untuk memadankan rentetan campuran Cina dan Inggeris. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!