匹配到'<p>abc<p>123<p>ggg<p>'中所有两个<p>之间的子串
时间: 2023-12-03 22:05:13 浏览: 90
要匹配字符串 `'<p>abc<p>123<p>ggg<p>'` 中所有两个 `<p>` 之间的子串,可以使用正则表达式中的贪婪匹配和非贪婪匹配。
贪婪匹配是指匹配尽可能多的字符,而非贪婪匹配是指匹配尽可能少的字符。
以下是使用非贪婪匹配的示例代码:
```python
import re
string = '<p>abc<p>123<p>ggg<p>'
pattern = r'<p>(.*?)<p>'
results = re.findall(pattern, string)
for result in results:
print(result)
```
输出:
```
abc
123
ggg
```
在上面的代码中,正则表达式 `'<p>(.*?)<p>'` 使用了 `.*?` 的非贪婪匹配模式,它会尽可能少地匹配字符。`re.findall()` 函数会返回所有匹配结果的列表。
如果使用贪婪匹配模式,即使用 `.*`,会导致匹配结果为整个字符串 `'<p>abc<p>123<p>ggg<p>'`。
希望以上信息对你有帮助!如果还有其他问题,请随时提问。
相关问题
<div class="priceBox"><p>本套房源的参考总价:<span>395万</span></p>python如何只获取数据‘395万’
可以使用正则表达式来提取数据,示例代码如下:
```
import re
text = '<div class="priceBox"><p>本套房源的参考总价:<span>395万</span></p>'
price = re.findall(r'<span>(\d+万)</span>', text)[0]
print(price) # 输出:395万
```
解释一下代码:
- `re.findall()` 方法可以在字符串中查找所有匹配正则表达式的子串,并返回一个列表。
- `r'<span>(\d+万)</span>'` 是一个正则表达式,它匹配字符串中形如 `<span>数字万</span>` 的子串,并把数字万部分提取出来。
- `[0]` 表示取返回列表的第一个元素,即提取出来的价格数据。
阅读全文