正则表达式 拆分快递地址
时间: 2023-12-10 07:35:11 浏览: 150
为了拆分快递地址,我们可以使用正则表达式来匹配地址中的各个部分。以下是一个示例正则表达式,可以匹配包含省份、城市、区县和详细地址的地址字符串:
```python
import re
address = "广东省深圳市南山区高新南一道9号"
pattern = r'(?P<province>[^省]+省)?(?P<city>[^市]+市)?(?P<district>[^区]+区|[^县]+县)?(?P<detail>.*)'
result = re.match(pattern, address)
print(result.groupdict())
```
输出结果为:
```
{'province': '广东', 'city': '深圳', 'district': '南山', 'detail': '高新南一道9号'}
```
这个正则表达式使用了命名捕获组,可以方便地获取地址中的各个部分。其中,`(?P<province>[^省]+省)?`匹配省份,`(?P<city>[^市]+市)?`匹配城市,`(?P<district>[^区]+区|[^县]+县)?`匹配区县,`(?P<detail>.*)`匹配详细地址。这些部分都是可选的,因此可以匹配不完整的地址。
相关问题
正则表达式拆分快递地址 java
以下是使用正则表达式拆分快递地址的示例代码:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String address = "江苏省南京市鼓楼区中山北路321号";
String regex = "(?<province>[^省]+省)?(?<city>[^市]+市)?(?<district>[^区]+区|[^县]+县)?(?<others>.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(address);
if (matcher.find()) {
String province = matcher.group("province");
String city = matcher.group("city");
String district = matcher.group("district");
String others = matcher.group("others");
System.out.println("省:" + province);
System.out.println("市:" + city);
System.out.println("区/县:" + district);
System.out.println("详细地址:" + others); }
}
}
```
输出结果为:
```
省:江苏
市:南京
区/县:鼓楼区
详细地址:中山北路321号
```
正则表达式中的`(?<province>[^省]+省)?`表示匹配不包含“省”字的字符串,其中`(?<province>`表示给匹配到的字符串起一个名字叫做“province”,`[^省]+`表示匹配不包含“省”字的字符串,`省`表示匹配“省”字,`)?`表示这个匹配是可选的。其他的匹配规则类似。
正则表达式拆分快递地址
以下是一个可以拆分快递地址的正则表达式:
```python
import re
address = "安徽省淮南市大通区大通街道某某某"
pattern = r'(?P<province>[^省]+省|.+自治区)(?P<city>[^自治州]+自治州|[^市]+市|[^盟]+盟|[^地区]+地区|.+区划)(?P<county>[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?P<town>[^区]+区|.+镇)?(?P<village>.*)'
result = re.match(pattern, address)
if result:
print("省份:", result.group('province'))
print("城市:", result.group('city'))
print("区县:", result.group('county'))
print("乡镇:", result.group('town'))
print("村庄:", result.group('village'))
else:
print("未匹配到地址信息")
```
输出结果为:
```
省份: 安徽省
城市: 淮南市
区县: 大通区
乡镇: 大通街道
村庄: 某某某
```
阅读全文