我试图在""这个词之后得到所有文字。在一个字符串..但我只得到第一个字母"" ..
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。
答案 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-]+)'
匹配does
之后的所有字母,短划线,空格和数字,直到?
或.
等特殊字符
如果您希望在单词does
之后一切,请使用以下内容:
r'(?<=does\s)(.+)'
(?<=does\s)
是一个积极的后卫,可以确保匹配前面有“确实”和空格。
[\w\s-]+
匹配一个或多个字母,数字,空格或短划线。
答案 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