我试图在字符串中" di di di di di di di di di di dip"之后获取所有文本。但是我只是在" dos"一词之后收到第一个字母..
string=str("does he like")
A=re.findall(r'^doess([w+s+])',string ,re.IGNORECASE)
for tuple in A:
print tuple[0]
该代码的输出仅给出" H",但我想要"他喜欢"。谁能看到我的代码怎么了?可能有一种更简单的方法,但我想使用re.findall的东西。我是Python的新手,并且要在此网站上发布。
哦,这是python 2.7。
尝试一下。这捕获了整个字符串,但使用组(1(使用tuple [0]用" dod"之后的每个单词。
A = re.findall(r'^does (.*)', string ,re.IGNORECASE)
希望这会有所帮助!
您可以尝试一下:
r'(?<=doess)([ws-]+)'
REGEX101的试验#1
与does
之后的所有字母,破折号,空格和数字匹配,直到?
或.
如果您想要所有内容在单词does
之后,请使用以下方式:
r'(?<=doess)(.+)'
REGEX101的试用#2
正则 -
(?<=doess)
是一个积极的外观,可确保匹配之前"做"。和一个空间。
[ws-]+
匹配一或寄出的字母,数字,空格或破折号。
这是上述言论的完整摘要。
您有两个问题。首先是[]
匹配给定组中的一个字符。您要求一个单词,空间或加号。第二个是,当您只有一个捕获组时,findall
会返回一个字符串,而不是元组。将加号移出角色组并直接使用匹配的字符串。
import re
string=str("does he like")
A=re.findall(r'^doess([ws]+)',string ,re.IGNORECASE)
for foo in A:
print foo
尝试以下:
import re
s = "does he like"
p = re.compile(r"[^does(n't)?].+")
print(''.join(p.findall(s, re.IGNORECASE)))
或此,如果您只需要he likes
:
r's.+'