Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python

Lepaskan: 2023-07-25 17:17:08
ke hadapan
1560 orang telah melayarinya

/Pengenalan/

Python telah menambah modul semula sejak versi 1.5, yang menyediakan corak ekspresi biasa gaya Perl. Modul re membolehkan bahasa Python mempunyai semua fungsi ekspresi biasa.

Fungsi kompilasi menjana objek ungkapan biasa berdasarkan rentetan corak dan parameter bendera pilihan. Objek ini mempunyai satu siri kaedah untuk pemadanan dan penggantian ungkapan biasa.

Modul semula juga menyediakan fungsi yang betul-betul sama dengan kaedah ini. Fungsi ini mengambil rentetan corak sebagai parameter pertamanya.


/re.match function/

re.match cuba memadankan corak dari kedudukan permulaan rentetan, jika kedudukan permulaan tidak dipadankan tiada. Sintaksnya adalah seperti berikut:

re.match(pattern, string, flags=0)
Salin selepas log masuk

"corak" sepadan dengan ungkapan biasa "rentetan" dan rentetan bendera "bendera" untuk dipadankan.

Jika perlawanan berjaya, kaedah re.match mengembalikan objek yang sepadan, jika tidak, ia mengembalikan Tiada.

Kita boleh menggunakan fungsi objek padanan kumpulan(num) atau kumpulan() untuk mendapatkan ungkapan yang sepadan.

group(num=0) 匹配的整个表达式的字符串,“group()”可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

下图是个实际例子:

Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python

输出结果如下图所示:

Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python


/检索和替换/

Python 的re模块提供了re.sub用于替换字符串中的匹配项。语法如下所示:

re.sub(pattern, repl, string, count=0, flags=0)
Salin selepas log masuk

参数:

pattern : 正则中的模式字符串。

repl : 替换的字符串,也可为一个函数。

string : 要被查找替换的原始字符串。

count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

flags : 编译时用的匹配模式,数字形式。

前三个为必参数,后两个为可选参数。

下图是个实际例子:

Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python

输出结果如下图所示:

Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python


/compile函数/

compile 函数用于编译正则表达式,供match() 和 search() 这两个函数使用。语法格式为:

re.compile(pattern[, flags])
Salin selepas log masuk

参数:

pattern : 一个字符串形式的正则表达式

flags 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

re.I 忽略大小写

  re.L mewakili set aksara khas w, W, b, B, s, S bergantung pada persekitaran semasa

mod berbilang baris re.M

re.S ialah ' aksara baris baharu Mana-mana aksara termasuk (' . 'tidak termasuk pemisah baris)

re.U mewakili set aksara khas w, W, b, B, d, D, s, S dan bergantung pada pangkalan data atribut aksara Unicode

semula.

re.MatchObject: group() mengembalikan rentetan yang dipadankan dengan RE. Mula () Kembali ke kedudukan permulaan yang sepadan

TAMAT () Mengembalikan kedudukan kedudukan padanan pengubah suai ungkapan biasa - bendera pilihan/

Ekspresi biasa boleh mengandungi beberapa pengubah suai bendera pilihan untuk mengawal corak yang dipadankan. Pengubah suai ditentukan sebagai bendera pilihan. Bendera berbilang boleh ditentukan dengan bitwise ATAU(|) mereka. Contohnya, re.I |. re.M ditetapkan kepada bendera I dan M:

Menghuraikan aksara mengikut set aksara w, W, b, B.

re.I

menjadikan perlawanan tidak sensitif huruf besar dan kecil

re

semula. re.U

Unicode. Tanda ini mempengaruhi

semula.


/corak ungkapan biasa/

Rentetan corak menggunakan sintaks khas untuk mewakili ungkapan biasa:

Huruf dan nombor mewakili diri mereka sendiri. Huruf dan nombor dalam corak ungkapan biasa sepadan dengan rentetan yang sama.

Kebanyakan huruf dan nombor mempunyai makna yang berbeza apabila didahului dengan garis serong ke belakang.

Tanda baca hanya sepadan dengan diri mereka sendiri jika ia dilepaskan, jika tidak, ia mewakili makna yang istimewa.

Serikan ke belakang itu sendiri perlu dilepaskan dengan garis serong ke belakang.

Memandangkan ungkapan biasa biasanya mengandungi garis miring ke belakang, lebih baik anda menggunakan rentetan mentah untuk mewakilinya. Elemen corak (seperti r't', bersamaan dengan \t) sepadan dengan aksara khas yang sepadan.

Jadual berikut menyenaraikan elemen istimewa dalam sintaks corak ungkapan biasa. Jika anda menggunakan corak dan memberikan hujah bendera pilihan, maksud beberapa elemen corak akan berubah.

Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python

Contoh Ungkapan Biasa

Padanan Watak

python

Contoh

sepadan dengan "python".

字符类

Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python

/实际应用/

以猫眼电影为例。我们需要获取(电影的名字作者,上映时间)等等都可以用正则表达式来解析。

Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python

分析一下,利用正则表达式提取。Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python

可以看到我们要的名字在一个a里面,而他们被一个div包裹着。

我们把div想象成一个盒子,可以看到div里面还有一个div 我们可以先找他上面一层的div是一个表单

再找到它的上一层的盒子div
一般来说我们找到前两层就可以找到我们要的结果。如果不对就再找几层。

分析完再实际操作一下:

pattern = re.compile(&#39;<div>.*?title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>&#39;,re.S)
Salin selepas log masuk

    (.*?)表示我们要的内容

(.*?)

里面的主演也是我们要的这样我们就可以得到我们想要得多个数据。


/小结/

1. Ungkapan biasa sesuai untuk senario di mana berbilang data perlu diperolehi. Ia boleh mendapatkan data yang kita inginkan dengan lebih pantas.

2. Artikel ini memperkenalkan ungkapan biasa dan penggunaan asasnya Untuk penggunaan khusus bagi setiap aksara, anda boleh merujuk artikel siri ungkapan biasa dalam kata pengantar .

Atas ialah kandungan terperinci Pengenalan kepada ungkapan biasa dan fungsi padanan biasa mereka dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:Go语言进阶学习
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