Python正则表达式匹配省市区
引言
在处理数据的过程中,经常会遇到需要从一段文本中提取特定内容的情况。而正则表达式(Regular Expression)则是一种强大的工具,可以用来在字符串中查找、匹配和替换特定的文本。本文将以Python中的re模块为例,介绍如何使用正则表达式来匹配省、市、区(县)信息。
Python中的re模块
Python提供了re模块来支持正则表达式的操作。re模块包含了一系列用于处理正则表达式的函数和方法。在使用re模块之前,需要先导入该模块:
import re
正则表达式语法
正则表达式是由一系列字符和特殊字符组成的字符串,用来描述文本模式。下面是一些常用的正则表达式语法:
.
:匹配任意字符(除了换行符)。*
:匹配前一个字符的0个或多个重复。+
:匹配前一个字符的1个或多个重复。?
:匹配前一个字符的0个或1个重复。^
:匹配字符串的开头。$
:匹配字符串的结尾。[]
:匹配字符集中的任意一个字符。()
:捕获匹配的子串。\d
:匹配任意数字字符。\D
:匹配任意非数字字符。\w
:匹配任意字母、数字、下划线字符。\W
:匹配任意非字母、数字、下划线字符。
匹配省、市、区信息
首先,我们需要准备一段文本,其中包含了省、市、区信息。假设我们有以下文本:
text = "上海市黄浦区北京市东城区广东省深圳市福田区"
我们的目标是从这段文本中提取出省、市、区的信息。下面是一个完整的示例代码:
import re
text = "上海市黄浦区北京市东城区广东省深圳市福田区"
# 匹配省信息
provinces = re.findall(r"(\w+省|\w+自治区|\w+特别行政区)", text)
print("省信息:", provinces)
# 匹配市信息
cities = re.findall(r"(\w+市|\w+自治州|\w+地区)", text)
print("市信息:", cities)
# 匹配区信息
districts = re.findall(r"(\w+区|\w+县)", text)
print("区信息:", districts)
运行结果如下:
省信息: ['上海市', '广东省']
市信息: ['黄浦区', '北京市', '东城区', '深圳市', '福田区']
区信息: ['黄浦区', '东城区', '福田区']
代码解释如下:
- 使用
re.findall()
函数来匹配所有符合条件的子串,返回一个列表。 - 使用正则表达式
(\w+省|\w+自治区|\w+特别行政区)
来匹配省信息。其中,\w+
表示匹配一个或多个字母、数字、下划线字符,|
表示或的关系。 - 使用正则表达式
(\w+市|\w+自治州|\w+地区)
来匹配市信息。 - 使用正则表达式
(\w+区|\w+县)
来匹配区信息。
类图
下面是一个使用mermaid语法绘制的类图,展示了re模块中常用的类和方法:
classDiagram
class re{
+ findall(pattern: str, string: str) : List[str]
+ search(pattern: str, string: str) : Match
+ match(pattern: str, string: str) : Match
+ split(pattern: str, string: str, maxsplit: int) : List[str]
+ sub(pattern: str, repl: str, string: str) : str
}
class Match{