Rumah pembangunan bahagian belakang Tutorial Python python中正则表达式的详细介绍

python中正则表达式的详细介绍

Oct 18, 2018 pm 05:15 PM
python

本篇文章给大家带来的内容是关于python中正则表达式的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

正则

re = regular experssion
re 模块使 Python 语言拥有全部的正则表达式功能。
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

作用: 对于字符串进行处理, 会检查这个字符串内容是否与你写的正则表达式匹配

如果匹配, 拿出匹配的内容;
如果不匹配, 忽略不匹配内容;

编写正则的规则

pattern 匹配的正则表达式
string 要匹配的字符串

三种查找方法

1

1). findall

Salin selepas log masuk

1

2

3

4

5

6

7

8

import re

 

str = 'hello sheen,hello cute.'

 

pattern_1 = r'hello'

pattern_2 = r'sheen'

print(re.findall(pattern_1,str))    #['hello''hello']

print(re.findall(pattern_2,str))    #['sheen']

Salin selepas log masuk

1

2).match

Salin selepas log masuk

match尝试从字符串的起始位置开始匹配,

  • 如果起始位置没有匹配成功, 返回一个None;

  • 如果起始位置匹配成功, 返回一个对象;

1

2

3

4

5

6

7

8

9

import re

 

str = 'hello sheen,hello cute.'

 

pattern_1 = r'hello'

pattern_2 = r'sheen'

print(re.match(pattern_1,str))           #<_sre.SRE_Match object; span=(0, 5), match=&#39;hello&#39;>

print(re.match(pattern_1,str).group())   #返回match匹配的字符串内容,hello

print(re.match(pattern_2,str))           #None

Salin selepas log masuk

1

3).search

Salin selepas log masuk

search会扫描整个字符串, 只返回第一个匹配成功的内容;

  • 如果能找到, 返回一个对象, 通过group方法获取对应的字符串;

1

2

3

4

5

6

7

8

9

10

import re

 

str = 'hello sheen,hello cute.'

 

pattern_1 = r'hello'

pattern_2 = r'sheen'

print(re.search(pattern_1,str))             #<_sre.SRE_Match object; span=(0, 5), match=&#39;hello&#39;>

print(re.search(pattern_1,str).group())     #hello

print(re.search(pattern_2,str))             #<_sre.SRE_Match object; span=(6, 11), match=&#39;sheen&#39;>

print(re.search(pattern_2,str).group())     #sheen

Salin selepas log masuk

特殊字符类

.: 匹配除了\n之外的任意字符; [.\n]
\d:  digit--(数字), 匹配一个数字字符, 等价于[0-9]
\D: 匹配一个非数字字符, 等价于[^0-9]
\s:  space(广义的空格: 空格, \t, \n, \r), 匹配单个任何的空白字符;
\S:  匹配除了单个任何的空白字符;
\w:  字母数字或者下划线, [a-zA-Z0-9_]
\W: 除了字母数字或者下划线, [^a-zA-Z0-9_]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import re

 

# .

print(re.findall(r'.','sheen\nstar\n'))     #['s''h''e''e''n''s''t''a''r']

 

#\d#\D

print(re.findall(r'\d','当前声望30'))       #['3''0']

print(re.findall(r'\D','当前声望30'))       #['当''前''声''望']

 

#\s#\S

print(re.findall(r'\s''\n当前\r声望\t为30'))     #['\n''\r''\t']

print(re.findall(r'\S''\n当前\r声望\t为30'))     #['当''前''声''望''为''3''0']

 

#\w#\W

print(re.findall(r'\w','lucky超可爱!!'))           #['l''u''c''k''y''超''可''爱']

print(re.findall(r'\W','lucky超可爱!!'))           #['!''!']

Salin selepas log masuk

766877681-5bc7043bddc4f_articlex.png

指定字符出现次数

匹配字符出现次数:

*: 代表前一个字符出现0次或者无限次;    d*,  .*
+: 代表前一个字符出现一次或者无限次;     d+
?: 代表前一个字符出现1次或者0次;   假设某些字符可省略, 也可以不省略的时候使用

第二种方式:

{m}: 前一个字符出现m次;
{m,}: 前一个字符至少出现m次;  * == {0,}; + ==={1,}
{m,n}: 前一个字符出现m次到n次; ? === {0,1}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

import re

 

#* 代表前一个字符出现0次或者无限次

print(re.findall(r's*','sheenstar'))        #['s''''''''''s''''''''']

print(re.findall(r's*','hello'))            #['''''''''''']

 

#+ 代表前一个字符出现一次或者无限次

print(re.findall(r's+','sheenstar'))        #['s''s']

print(re.findall(r's+','hello'))            #[]

 

# ? 代表前一个字符出现1次或者0次

print(re.findall(r'188-?''188 6543'))     #['188']

print(re.findall(r'188-?''188-6543'))     #['188-']

print(re.findall(r'188-?''148-6543'))     #[]

 

 

# 匹配电话号码

pattern = r'\d{3}[\s-]?\d{4}[\s-]?\d{4}'

print(re.findall(pattern,'188 0123 4567'))      #['188 0123 4567']

print(re.findall(pattern,'188-0123-4567'))      #['188-0123-4567']

print(re.findall(pattern,'18801234567'))        #['188-0123-4567']

Salin selepas log masuk

练习--匹配IP

可以从网上搜索正则表达式生成器,使用别人写好的规则,自己测试。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import re

 

# | 表示或者

pattern = r'(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$'

 

print(re.findall(pattern,'172.25.254.34'))  #[('172''25''254''34')]

 

matchObj_1 = re.match(pattern,'172.25.254.34')

if matchObj_1:

    print('匹配项:',matchObj_1.group())                     #172.25.254.34

else:

    print('未找到匹配项')

 

matchObj_2 = re.match(pattern,'172.25.254.343')

if matchObj_2:

    print('匹配项:',matchObj_2.group())                     

else:

    print('未找到匹配项')

Salin selepas log masuk

3396363902-5bc7040980a0c_articlex.png

Atas ialah kandungan terperinci python中正则表达式的详细介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Apr 01, 2025 pm 05:09 PM

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Python Hourglass Graph Lukisan: Bagaimana untuk mengelakkan kesilapan yang tidak ditentukan? Python Hourglass Graph Lukisan: Bagaimana untuk mengelakkan kesilapan yang tidak ditentukan? Apr 01, 2025 pm 06:27 PM

Bermula dengan Python: Lukisan Grafik Hourglass dan Pengesahan Input Artikel ini akan menyelesaikan masalah definisi berubah -ubah yang dihadapi oleh pemula python dalam program lukisan grafik Hourglass. Kod ...

Bagaimana untuk melihat fungsi asal yang terkandung secara dalaman oleh python funcools.partial Object? Bagaimana untuk melihat fungsi asal yang terkandung secara dalaman oleh python funcools.partial Object? Apr 01, 2025 pm 04:15 PM

Sangat meneroka kaedah tontonan python funcools.partial Object in Funcools.Partial Menggunakan Python ...

Pembangunan Aplikasi Desktop Cross-Platform Python: Perpustakaan GUI mana yang terbaik untuk anda? Pembangunan Aplikasi Desktop Cross-Platform Python: Perpustakaan GUI mana yang terbaik untuk anda? Apr 01, 2025 pm 05:24 PM

Pilihan Perpustakaan Pembangunan Aplikasi Desktop Python Python Banyak pemaju Python ingin membangunkan aplikasi desktop yang boleh dijalankan pada kedua-dua sistem Windows dan Linux ...

Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Apr 01, 2025 pm 11:15 PM

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Adakah Google dan AWS menyediakan sumber imej Pypi awam? Adakah Google dan AWS menyediakan sumber imej Pypi awam? Apr 01, 2025 pm 05:15 PM

Ramai pemaju bergantung kepada PYPI (PythonPackageIndex) ...

Bagaimana cara mengira dan menyusun set data produk yang besar di Python? Bagaimana cara mengira dan menyusun set data produk yang besar di Python? Apr 01, 2025 pm 08:03 PM

Penukaran dan Statistik Data: Pemprosesan yang cekap bagi set data besar Artikel ini akan memperkenalkan secara terperinci bagaimana untuk menukar senarai data yang mengandungi maklumat produk kepada yang lain yang mengandungi ...

Bagaimana untuk mengoptimumkan pemprosesan imej resolusi tinggi di Python untuk mencari kawasan bulat putih yang tepat? Bagaimana untuk mengoptimumkan pemprosesan imej resolusi tinggi di Python untuk mencari kawasan bulat putih yang tepat? Apr 01, 2025 pm 06:12 PM

Bagaimana untuk mengendalikan imej resolusi tinggi di Python untuk mencari kawasan putih? Memproses gambar resolusi tinggi 9000x7000 piksel, bagaimana untuk mencari dua gambar dengan tepat ...

See all articles