玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容

Python re正则表达式多组匹配问题

比如有这么一个字符串。"xiaohong loves xiaoming,xiaozhu loves xiaoli,xiaopeng loves xiaozhao"。我希望用Python正则表达式提取出loves两边的人名来。
我这样写的。
names = re.search(r'(\S+) loves (\S+)',str, ) while names: print names.group(1) print names.group(2)
但是一直打印xiaohong,xiaoming.
希望知道正确的用法。看了几篇文档,好像没提及。

应当使用 find_all()

search的功能就是: 从左到右,去计算是否匹配,如果有匹配,就返回。 即只要找到匹配,就返回了。 所以,最多只会匹配一个, 而不会匹配多个。
findall可以全部匹配。

#!/usr/bin/python
# -*- coding: utf-8 -*- 

import re

str = 'xiaohong loves xiaoming,xiaozhu loves xiaoli,xiaopeng loves xiaozhao'

names = re.findall(r'(\S+) loves (\S+)(,|$)',str, re.I)

print names

if names:
    for group in names:
        print group[0], group[1]

玩蛇网文章,转载请注明出处和文章网址:http://www.iplaypy.com/wenda/wd18588.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月31日 - 17时23分26秒 发布自玩蛇网

我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules