利用正则表达式提取城市名称和编码
时间: 2023-07-30 17:12:08 浏览: 89
假设我们有一段文本如下:
```
北京市:110000, 上海市:310000, 广州市:440100, 深圳市:440300
```
我们需要提取出城市名称和编码,可以使用正则表达式来实现:
```python
import re
text = "北京市:110000, 上海市:310000, 广州市:440100, 深圳市:440300"
pattern = r"(\w+市):(\d+)"
result = re.findall(pattern, text)
print(result)
```
输出结果为:
```
[('北京市', '110000'), ('上海市', '310000'), ('广州市', '440100'), ('深圳市', '440300')]
```
正则表达式解析:
- `(\w+市)`: 匹配以“市”结尾的城市名称,使用括号将其作为第一个匹配组。
- `:`:匹配冒号。
- `(\d+)`:匹配数字编码,使用括号将其作为第二个匹配组。
`re.findall()` 函数返回所有匹配的结果,结果以元组列表的形式返回。其中,每个元组表示一个匹配组的结果。在本例中,每个元组都包含城市名称和编码,分别位于第一个匹配组和第二个匹配组中。
相关问题
Java利用正则表达式提取城市名称和编码
可以使用正则表达式来提取城市名称和编码,假设城市名称和编码的格式为:城市名称(城市编码),例如:北京市(110000)。
以下是Java代码示例:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CityCodeExtractor {
public static void main(String[] args) {
String text = "上海市(310000)是一个美丽的城市,北京市(110000)也是一个美丽的城市。";
Pattern pattern = Pattern.compile("(.+?)((\\d{6}))");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
String cityName = matcher.group(1);
String cityCode = matcher.group(2);
System.out.println(cityName + ": " + cityCode);
}
}
}
```
输出结果为:
```
上海市: 310000
北京市: 110000
```
其中正则表达式 `(.+?)((\\d{6}))` 的含义为:
- `(.+?)` 匹配任意字符(非贪婪模式),并捕获到第一个括号中,表示城市名称。
- `(` 匹配左括号。
- `(\\d{6})` 匹配6位数字,表示城市编码,并捕获到第二个括号中。
- `)` 匹配右括号。
Java利用正则表达式提取城市名称和编码代码
可以使用 Java 中的正则表达式来提取城市名称和编码,代码如下:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "北京市:110000, 上海市:310000, 广州市:440100, 深圳市:440300";
String pattern = "(\\w+市):(\\d+)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(text);
while (m.find()) {
System.out.println("城市名称:" + m.group(1) + ",编码:" + m.group(2));
}
}
}
```
输出结果为:
```
城市名称:北京市,编码:110000
城市名称:上海市,编码:310000
城市名称:广州市,编码:440100
城市名称:深圳市,编码:440300
```
正则表达式解析:
- `(\\w+市)`: 匹配以“市”结尾的城市名称,使用括号将其作为第一个匹配组。
- `:`:匹配冒号。
- `(\\d+)`:匹配数字编码,使用括号将其作为第二个匹配组。
在匹配完成后,使用 `m.group(1)` 和 `m.group(2)` 分别获取第一个和第二个匹配组的结果,即城市名称和编码。