学会Python正则表达式,就看这20个例子(脚本之家修正版)
正则表达式是一种强大的文本处理工具,可以用于各种本处理任务,如数据清洗、文本分析、信息提取等。本攻略将介绍20个Python正则表达式的例子,助您更好地掌握正则表达式的用法。
例子1:匹配数字
import re
text = 'The price the product is $20'
result = re.findall(r'\d+', text)
print(result)
在上面的代码中,我们使用正则表达式\d+
匹配文本中的数字。+
表示匹配前面的字符一次或多。运行代码后,输出结果为['20']
。
例子2:匹配单词
import re
text = 'The quick brown fox jumps over the lazy dog'
result = re.findall(r'\b\w+\b', text)
print(result)
在上面的代码中,我们使用正则表达\b\w+\b
匹配文本中的单词。\b
表示单词的边界,\w+
表示匹配一个或多个字母、数字或下划线。运行代码后,输出结果为['', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
。
例子3:匹配邮箱地址
import re
text = 'My email is john@example.com'
result = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', text)
print(result)
在上面的代码中,我们使用正则表达式\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
匹配文本中的邮箱。运行代码,输出结果为['john@example.com']
。
例子4:匹配URL链接
import re
text = 'Check out my website at https://www.example.com'
result = re.findall(r'https?://\S+', text)
print(result)
在上面的代码中,我们使用正则表达式https?://\S+
匹配文本中的URL链接。https?
表示匹配http
或https
,\S+
表示匹配一个或多个非空白字符。运行代码后,输出结果为['httpswww.example.com']
。
例子5:匹配IP地址
import re
text = 'My IP address is 192.168.0.1'
result = re.findall(r'\b(?:\d{1,3}\.){3}\d{1,3}\b', text)
print(result)
`
在上面的代码中,我们使用正则表式`\b(?:\d{1,3}\.){3}\d{1,3}\b`匹配文本中的IP地址。d{1,3}\.`表示匹配一个或三个数字和一个点号,`(?:...)`表示非捕获分组,`\b`表示单词的边界。运行代码后,输出结果为`['192.168.01']`。
## 例子6:匹配日期
```python
import re
text = 'Today is 2022-01-01'
result = re.findall(r'\d{4}-\d{2}-\d{2}', text)
print(result)
在上面的代码中,我们使用正则表达式\d{4}-\d{2\d{2}
匹配文本中的日期。\d{4}
表示匹配四个数字,-
表示匹配一个短横线,\{2}
表示匹配两个数字。运行代码后,输出结果为['2022-01-01']
。
例子7:匹配手机号码
import re
text = 'My phone number is 123-456-7890'
= re.findall(r'\d{3}-\d{3}-\d{4}', text)
print(result)
在上面的代码中,我们使用正则表达式\d{3}-\d{3}-\d{4}
匹配文本中的手机号码。\d{3}
表示匹配三个数字,-
表示匹配一个短横线,\d{4}
表示匹配四个数字。运行代码后,输出结果为['123-456-7890']
。
例子8:匹配HTML标签
import re
text = '<h1>Hello, world!</h1>'
result = re.findall(r'<.*?>', text)
print(result)
在上面的代码中,我们使用正则表达式<.*?>
匹配文本中的HTML标签。<
表示匹配一个左尖括号,.*?
表示匹配任意字符,?
表示非贪婪匹配,>
表示匹配一个右尖括号。运行代码后,输出结果为['<h1>', '</h1>']
。
例子9:匹配中文字符
import re
text = '你好,世界!'
result = re.findall(r'[\u4e00-\u9fa5]+', text)
print(result)
在上面的代码中,我们使用正则表达式[\u4e00-\9fa5]+
匹配文本中的中文字符。[\u4e00-\u9fa5]
表示匹配一个中文字符,`表示匹配一个或多个中文字符。运行代码后,输出结果为
['你好', '世界']`。
例子10:匹配身份证号码
import re
= 'My ID number is 110101199001011234'
result = re.findall(r'\d{17}[\d|x]|\d{15}', text)
print(result)
在上面的代码中,我们使用正则表达式\d{17}[\d|x]|\d{15}
匹配文本中身份证号码。\d{17}
表示匹配17个数字,[\d|x]
表示匹配一个数字或字母x
,`表示或,
\d{15}表示匹配15个数字。运行代码后,输出结果为
['110101199001011234']`。
例子11:匹配邮政编码
import re
text = 'My zip code is 100101'
result = re.findall(r'\b\d{6}\b', text)
print(result)
在上面的代码中,我们使用正则表达式\b\d{6}\b
匹配文本中的邮政编码。\d{6}
表示匹配6个数字,\b
表示单词的边界。运行代码后,输出结果为['100101']
。
例子12:匹配QQ号码
import re
text = 'My QQ number is 123456789'
result = re.findall(r'[1-9]\d{4,10}', text)
print(result)
在上面的代码中,我们使用正则表达式[1-9]\d{4,10}
匹文本的QQ号码。[1-9]
表示匹配一个非零数字,\d{4,10}
表示匹配4到10个数字。运行代码后,输出结果为['123456789']
。
例子13:匹配微信号```python
import re
text = 'My WeChat ID is wx123456'
result = re.findall(r'[a-zA-Z][-_a-zA-Z0-9]{5,19}', text)
print(result)
在上面的代码中,我们使用正则表达式`[a-zA-Z][-_a-zA-Z0-9]{,19}`匹配文本中的微信号。`[a-zA-Z]`表示匹配一个字母,`[-_a-zA-Z0-9]{,19}`表示匹配5到19个字母、数字或下划线。运行代码后,输出结果为`['wx123456']`。
## 例子14:匹配MAC地址
```pythonimport re
text = 'My MAC address is 00:11:22:33:44:55'
result = re.findall'[0-9a-fA-F]{2}([-:])[0-9a-fA-F]{2}(?:\1[0-9a-fA-F]{2}){4}', text)
print(result)
在上面的代码中,我们使用正则表达式[0-9a-fA-F]{2}([-:])[0-9a-fA-F]{2}(?:\1[0-9a-fA-F]{2}){4}匹配文本中的MAC地址。
[0-9a-fA-F]{2}表示匹配两个十六进制数字,
([-:])表示匹配一个短横线或号,并将其保存到分组中,
(?:...)表示非捕获分组,
\1表示引用第一个分组,
{4表示复4次。运行代码后,输出结果为['00:11:22:33:44:55']
。
例子15:匹配注释
import re
text = '<!-- This is a comment -->'
result = re.findall(r'<!--(.*?)-->', text)
print(result)
在上面的代码中,我们使用正则表达式<!--(.*?)-->
匹配文本中的HTML注释。<!--
表示匹配一个左注释符,(.*?)
表示匹配任意字符,?
表示非贪婪匹配,-->
表示匹配一个右注释符。运行代码后,输出结果[' This is a comment ']
。
例子16:匹配XML标签
import re
text = '<book><title>Python Programming</title><author>John Doe</author></book>'
result = re.findall(r'<(\w+)>(.*?)</\1>', text)
print(result)
在上面的代码中,我们使用正则表达式<(\w+)>(.*?)<!--\1-->
匹配文本中的XML标签。<(\w+)>
表示匹配一个左标签符和标签名,并将标签名保存到分组中,(.*?)
表示匹配任意字符,?
表示非贪婪匹配,<!--\1-->
表示匹配一个右标签符和标签名。运行代码后,输出结果为[('title', 'Python Programming'), ('author', 'John Doe')]
。
例子17:匹配HTML标签属性```python
import re
text = 'Example'
result = re.findall(r'<\w+\s+href="([^"]+)".?>(.?)', text)
print(result)
在上面的代码中,我们使用正则表达式`\w+\s+href="([^"]+)".*?>(.*?)</\w+>`匹配文本中的HTML标签属性。`<\w+\s+href="([^"]+)".*?>`表示匹配一个左标签符、标签名、空格、`href`属性和属性值,并将属性值保存到分组中,`.*?`表示匹配任意字符,`?`表示非贪婪匹配,`</\w+>`表示匹配一个右标签符和标签名。运行代码后,输出结果为`[('https://www.example.com', 'Example')]`。
## 例子18:匹配HTML标签内容
```python
import re
text = '<h1>Hello, world!</h1>'
result = re.findall(r'<.*?>(.*?)</.*?>', text)
print(result)
`
在上面的代码中,我们使用正则表达式`<.*?>(.*?)</.*?>`匹配文本中的HTML标签。`<.*?>`表示匹配一个左标签符和任意字符,`.*?`表示匹配任意字符,`?`表示非贪婪配,`</.*?>`表示匹配一个右标签符。运行代码后,输出结果为`['Hello, world!']`。
## 例子19:替换文本中的空格
```python
import re
= 'The quick brown fox jumps over the lazy dog'
result = re.sub(r'\s+', '-', text)
print(result)
在上面的代码中,我们使用正则表达式\s+
匹配文本中的空格,并用短横线替换它们。\s+
表示匹配一个或多个空格。运行代码后,输出结果为The-quick-brown-fox-jumps-over-the-lazy-dog
。
例子20:替换文本中的HTML标签
import re
text = '<h1>Hello, world!</h1>'
result = re.sub(r'<.*?>', '', text)
print(result)
在上面的代码,我们使用正则表达式<.*?>
匹文本中的HTML标签,并将它们替换为空字符串。<.*?>
表示匹配一个HTML标签。运行代码后,输出结果为Hello, world!
。
总结
本攻略介绍了20个Python正则表达式的例子,帮助您更好地掌握正则表达式的用法。正则表达是一种强大的文本处理工,可以用于各种文本处理任务,如数据清洗、文本分析、信息提取等。熟练掌握正则表达式的用,可以大大提高我们的工作效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:学会Python正则表达式,就看这20个例子(脚本之家修正版) - Python技术站