Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk melaksanakan padanan bertindih dengan ungkapan biasa python

Bagaimana untuk melaksanakan padanan bertindih dengan ungkapan biasa python

WBOY
WBOYke hadapan
2022-07-25 17:20:443245semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang Python terutamanya cara ungkapan biasa python melaksanakan padanan bertindih. Mari kita lihat bersama-sama adalah membantu.

Bagaimana untuk melaksanakan padanan bertindih dengan ungkapan biasa python

[Cadangan berkaitan: Tutorial video Python3]

Ungkapan biasa untuk melaksanakan padanan bertindih

import regex
string = '100101010001'
str_re = '101'
print(regex.findall(str_re, string, overlapped=True))

Padanan perpustakaan semula biasa hanya boleh memadankan satu '101'.

Ungkapan biasa dan padanan biasa

Ungkapan biasa

Ungkapan biasa boleh difahami sebagai ungkapan untuk menapis data, iaitu bilangan atom yang terhad dan metakarakter.

Atom: Unit asas, setiap ungkapan mempunyai sekurang-kurangnya satu atom

Aksara biasa membentuk atom
普通字符组成原子  

非打印字符组成原子

(不打印在输出台的字符)

n:换行

t:tab退格符

通用字符组成原子

w:匹配任意字母、数字、下划线

W:与w相反

d:匹配任意十进制数

D:与d相反

s:匹配任意空白字符,如空格、换行、缩进

S:与s相反

原子表组成原子

一组原子组成一个表,由[]声明

表内原子优先级相等,但内容只出现依次

若原子表以 ^ 开头,则表示取反

Aksara bukan cetakan membentuk atom
#普通字符组成原子
pat1 = "abcd"
 
#非打印字符组成原子
pat2 = "\n"
 
#通用字符做原子
pat3 = "\w"
 
#原子表组成原子
pat4 = "py[abc]"
#可以匹配pya,pyb,pyc,但匹配pyab等原子表重复出现的情况失败
 
#原子表开头带 ^ 表示取反
pat5 = "py[^abc]"
#第三个位置匹配除了a,b,c外的任意一个字符

(Aksara tidak dicetak pada jadual output)

n: suapan baris
. 匹配任意字符,除了换行符
^ 匹配字符串开始的位置
$ 匹配字符串结束的位置,当出现多组符合的匹配时,返回字符串最后的那组匹配
* 匹配 0,1,n 次前面的原子【贪婪模式:尽可能多的匹配】
? 匹配 0,1 次前面的原子【懒惰模式:精确匹配】
匹配 1,n 次前面的原子
{ j } 前面的原子出现 j 次
{ j , } 前面的原子至少出现 j 次
{ j , k } 前面的原子至少出现 j 次,至多出现 k 次
i | j 匹配 i 或 j ,若 i 与 j 同时出现,匹配 i
( ) 组,限制这组数据的组合如()内所描述一样,只返回符合括号内描述的内容
t: ruang belakang tab

Watak universal membentuk atom w: Memadankan mana-mana huruf, nombor dan garis bawahW: Lawan w

d: Memadankan mana-mana nombor perpuluhan
re.I 匹配时忽略大小写
re.M 多行匹配
re.L 本地化识别匹配
re.U 根据unicon字符匹配,影响w W
re.S 匹配包括换行符

D: Bertentangan ds: Memadankan mana-mana aksara ruang putih, seperti ruang, baris baharu, indenS: Bertentangan dengan s

Jadual atom terdiri daripada atom Sekumpulan atom membentuk jadual, diisytiharkan oleh []

Keutamaan atom dalam jadual adalah sama, tetapi kandungannya hanya Urutan kejadian

Jika jadual atom bermula dengan ^, ia bermakna penolakan

  • aksara meta: re.search(pat, str[, flag])Watak dengan makna istimewa dalam ungkapan biasa
import re
str = 'python'
pat = 'pytho[a-n]'
print(re.search(pat, str))
    Pengubah suai corak
  • re.match(pat, str[, flag])
  • ialah parameter pada kedudukan bendera dalam fungsi, tanpa mengubah ungkapan biasa Dalam sesetengah kes, tukar maknanya dan laraskan hasil yang sepadan.
import re
str_1 = 'hello world'
str_2 = 'world hello'
pat = 'world'
print(re.match(pat, str_1))
print(re.match(pat, str_2))
  • re.complie(pat[, flag])Padanan biasa
  • findall(str[, pos[, endpos]])
  • Ungkapan biasa ialah padanan kabur pada rentetan, salah satunya digunakan sebagai rentetan biasa perlawanan. Padanan biasa ialah teknologi yang digunakan oleh perangkak python untuk mengekstrak maklumat sasaran daripada maklumat teks yang dirangkak. re.complie(pat).findall(str)
Fungsi yang biasa digunakan untuk pemadanan biasa: (panggil modul ungkapan biasa semula)
import re
str = "hello world hello world hello world"
pat = "hello"
print(re.complie(pat).findall(str))
print(re.complie(pat).findall(str, 5, 15))
  • re.sub(pat, repl, str[, count[, flag]])
  • : Imbas rentetan str dan kembalikan kedudukan tepuk (th berjaya dipadankan), bendera digunakan untuk mengawal kaedah pemadanan ungkapan biasa
import re
str = "400-823-823"
pat = "-"
#短横改空格,最大替换次数2
str_new = re.sub(pat, " ", str, count=2)

: imbas kedudukan permulaan rentetan str dan kembalikan kedudukan daripada pat (th (perlawanan yang berjaya), bendera digunakan untuk mengawal kaedah pemadanan ungkapan biasa [jika ia tidak sepadan pada mulanya, ia akan tamat dan tiada kembali] : fungsi pemadanan global, sepadan dengan semua subrentetan dalam str yang sepadan dengan pat, memuatkan senarai dan mengembalikan hasilnya : Gantikan item yang sepadan dalam rentetan [data bersih], anda boleh menggunakan kiraan untuk menentukan bilangan maksimum penggantian [Cadangan berkaitan : Tutorial video Python3]

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan padanan bertindih dengan ungkapan biasa python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam