学会Python正则表达式,就看这20个例子(脚本之家修正版)

  • Post category:Python

学会Python正则表达式,就看这20个例子(脚本之家修正版)

正则表达式是一种强大的文本处理工具,可以用于各种文本处理任务,如数据清洗、文本分析、信息提取等。本攻略将介绍20个Python正则表达式的例子,帮助您更好地掌握正则表达式的用法。

例子1:匹配数字

import re

text = 'The price of 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+表示匹配一个或多个字母、数字或下划线。运行代码后,输出结果为['The', '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?表示匹配httphttps\S+表示匹配一个或多个非空白字符。运行代码后,输出结果为['https://www.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.0.1']

例子6:匹配日期

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}表示匹配四个数字,-表示匹配一个短横线,\d{2}表示匹配两个数字。运行代码后,输出结果为['2022-01-01']

例子7:匹配手机号码

import re

text = 'My phone number is 123-456-7890'
result = 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-\u9fa5]+匹配文本中的中文字符。[\u4e00-\u9fa5]表示匹配一个中文字符,+表示匹配一个或多个中文字符。运行代码后,输出结果为['你好', '世界']

例子10:匹配身份证号码

import re

text = '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:匹配微信号

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]{5,19}匹配文本中的微信号。[a-zA-Z]表示匹配一个字母,[-_a-zA-Z0-9]{5,19}表示匹配5到19个字母、数字或下划线。运行代码后,输出结果为['wx123456']

例子14:匹配MAC地址

import re

text = 'My MAC address is 00:11:22:33:44:55'
result = re.findall(r'[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:匹配HTML注释

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标签属性

import re

text = '<a href="https://www.example.com">Example</a>'
result = re.findall(r'<\w+\s+href="([^"]+)".*?>(.*?)</\w+>', text)
print(result)

在上面的代码中,我们使用正则表达式<\w+\s+href="([^"]+)".*?>(.*?)<!--\w+-->匹配文本中的HTML标签属性。<\w+\s+href="([^"]+)".*?>表示匹配一个左标签符、标签名、空格、href属性和属性值,并将属性值保存到分组中,.*?表示匹配任意字符,?表示非贪婪匹配,<!--\w+-->表示匹配一个右标签符和标签名。运行代码后,输出结果为[('https://www.example.com', 'Example')]

例子18:匹配HTML标签内容

import re

text = '<h1>Hello, world!</h1>'
result = re.findall(r'<.*?>(.*?)</.*?>', text)
print(result)

在上面的代码中,我们使用正则表达式<.*?>(.*?)<!--.*?-->匹配文本中的HTML标签内容。<.*?>表示匹配一个左标签符和任意字符,.*?表示匹配任意字符,?表示非贪婪匹配,<!--.*?-->表示匹配一个右标签符。运行代码后,输出结果为['Hello, world!']

例子19:替换文本中的空格

import re

text = '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正则表达式的例子,帮助您更好地掌握正则表达式的用法。正则表达是一种强大的文本处理工具,可以用于各种文本处理任务,如数据清洗、文本分析、信息提取等。熟练掌握正则表达式的用法,可以大大提高我们的工作效率。