re.findall不输出组权限

时间:2018-03-25 17:43:04

标签: regex python-2.7

我试图在""这个词之后得到所有文字。在一个字符串..但我只得到第一个字母"" ..

string=str("does he like") 
A=re.findall(r'^does\s([\w+\s+])',string ,re.IGNORECASE)
for tuple in A:
    print tuple[0]

该代码的输出只是给出了" h",但我想"他喜欢"。任何人都可以看到我的代码有什么问题吗?可能有一种更简单的方法,但我想使用re.findall的东西。我是python的新手并在这个网站上发帖..所以对我很轻松..谢谢

哦,顺便说一下这是python 2.7。

4 个答案:

答案 0 :(得分:0)

试试这个:

import re
s = "does he like"
p = re.compile(r"[^does(n't)?].+")
print(''.join(p.findall(s, re.IGNORECASE)))

或者,如果你只想要he likes

r'\s.+'

答案 1 :(得分:0)

试试这个。这会捕获整个字符串,但是使用group(1),你使用元组[0]并在'之后抓住每个单词。

A = re.findall(r'^does (.*)', string ,re.IGNORECASE)

希望这有帮助!

答案 2 :(得分:0)

你可以尝试一下:

r'(?<=does\s)([\w\s-]+)'

Trial #1 at regex101

匹配does之后的所有字母,短划线,空格和数字,直到?.等特殊字符

如果您希望在单词does之后一切,请使用以下内容:

r'(?<=does\s)(.+)'

Trial #2 at regex101

正则表达式 -

(?<=does\s)是一个积极的后卫,可以确保匹配前面有“确实”和空格。

[\w\s-]+匹配一个或多个字母,数字,空格或短划线。

Here's a full summary of the above regexes

答案 3 :(得分:0)

你有两个问题。第一个是[]匹配给定组中的单个字符。你问了一个单词,空格或加号。第二个是当你只有一个捕获组时,findall返回一个字符串,而不是一个元组。将加号移出字符组并直接使用匹配的字符串。

import re

string=str("does he like") 
A=re.findall(r'^does\s([\w\s]+)',string ,re.IGNORECASE)
for foo in A:
    print foo