Python利用正则表达式提取特殊信息
本攻略将详细讲解如何使用Python中的正则表达式来提取特殊信息,包括如何提取URL、邮箱地址、手机号码、身份证号码等常见信息。
提取URL
下面是一个例子,演示如何使用正则表达式提取URL:
import re
text = 'Visit my website at http://www.example.com'
pattern = r'http[s]?://(?:[a-zA-Z0-9]|[$@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
result = re.search(pattern, text)
if result:
print('Match found:', result.group())
else:
print('Match not found')
在上面的代码中,我们使用正则表达式http[s]?://(?:[a-zA-Z0-9]|[$@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+
进行匹配。然后,我们使用search()函数进行匹配。search()函数返回第一个匹配的结果。如果匹配成功,我们使用group()函数获取匹配到的URL。运行代码后,结果为Match found: http://www.example.com
。
提取邮箱地址
下面是一个例子,演示如何使用正则表达式提取邮箱地址:
import re
text = 'My email address is john@example.com'
pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
result = re.search(pattern, text)
if result:
print('Match found:', result.group())
else:
print('Match not found')
在上面的代码中,我们使用正则表达式[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
进行匹配。然后,我们使用search()函数进行匹配。search()函数返回第一个匹配的结果。如果匹成功,我们使用group()函数获取匹配到的邮箱地址。运行代码后,结果为Match found: john@example.com
。
提取手机号码
下面是一个例子,演示如何使用正则表达式提取手机号码:
import re
text = 'My phone number is 13812345678'
pattern = r'1[3-9]\d{9}'
result = re.search(pattern, text)
if result:
print('Match found:', result.group())
else:
print('Match not found')
在上面的代码中,我们使用正则表达式1[3-9]\d{9}
进行匹配。然后,我们search()函数进行匹配。search()函数返回第一个匹配的结果。如果匹配成功,我们使用group()函数获取匹配到的手机号码。运行代码后,结果为Match found: 13812345678
。
提取身份证号码
下面是一个例子,演示如何使用正则表达式提取身份证号码:
import re
text = 'My ID card number is 110101199001011234'
pattern = r'\d{17}[\d|x]|\d{15}'
result = re.search(pattern, text)
if result:
print('Match found:', result.group())
else:
print('Match not found')
在上面的代码中,我们使用正则表达式\d{17}[\d|x]|\d{15}
进行匹配。然后,我们使用search()函数进行匹配。search函数返回第一个匹配的结果。如果匹配成功,我们使用group()函数获取匹配到的身份证号码。运行代码后,结果为Match found: 110101199001011234
。
以上是Python利用正则表达式提取特殊信息的完整攻略。在实际应用中,我们可以根据具体情况选择合适的正则表达式模,以便快速、准确地提取特殊信息。
示例说明
示例1:从HTML中提取链接
下面是一个例子,演示如何从HTML中提取链接:
import re
html = '<a href="http://www.example.com">Example</a>'
pattern = r'href="([^"]*)"'
result = re.search(pattern, html)
if result:
print('Match found:', result.group(1))
else:
print('Match not found')
在上的代码中,我们使用正则表达式href="([^"]"
进行匹配。然后,我们使用search()函数进行匹配。search()函数返回第一个匹配的结果。如果匹配成功,我们使用group(1)函数获取匹配到的链接。运行代码后,结果为`Match found: http://www.example.com。
示例2:从JSON中提取特定字段
下面是一个例子,演示如何从JSON中提取特定字段:
import re
import json
json_data = '{"name": "John", "age": 30, "city": "New York"}'
pattern = r'"name": "([^"]*)"'
result = re.search(pattern, json_data)
if result:
name = result.group(1)
data = json.loads(json_data)
print('Name:', name)
print('Age:', data['age'])
print('City:', data['city'])
else:
print('Match not found')
在上面的代码中,我们使用正则表达式"name": "([^"]*)"
进行匹配。然后,我们使用search()函数进行匹配。search()函数返回第一个匹配的结果。如果匹配成功,我们使用group(1)函数获取匹配到的名称。然后,我们使用.loads()函数将JSON数据转换为Python对象。最后,我们可以使用Python对象来访问特定字段。运行代码后,结果:
Name: John
Age: 30
City: New York
以上是Python利用正则表达式提取特殊信息的完整攻略。在实际应用中,我们可以根据具体情况选择合适的正则表达式模式,以便快速、准确地提取特殊信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 利用正则表达式提取特殊信息 - Python技术站