Python中的正则表达式

Python中的正则表达式,python,regex,string,Python,Regex,String,我想捕捉一个出现在模式后的单词。例如,如果考虑的字符串是“abc def ghi”,我需要返回“def”之后的下一个单词(如果存在)。在这种情况下,它是“ghi”。 有人能告诉我python中的正则表达式应该是什么吗?我们可以假设我们正在处理以空格分隔的字符串。 对于“abc def ghi jkl def pqr”,它应该返回['ghi',pqr']。您可以尝试以下方法: def\s+(\w+)? “def”之后的下一个单词出现在捕获组1中 Python示例: import re reg

我想捕捉一个出现在模式后的单词。例如,如果考虑的字符串是“abc def ghi”,我需要返回“def”之后的下一个单词(如果存在)。在这种情况下,它是“ghi”。 有人能告诉我python中的正则表达式应该是什么吗?我们可以假设我们正在处理以空格分隔的字符串。 对于“abc def ghi jkl def pqr”,它应该返回['ghi',pqr']。

您可以尝试以下方法:

def\s+(\w+)?
“def”之后的下一个单词出现在捕获组1中

Python示例:

import re

regex = r"def\s+(\w+)?"

test_str = "abasdf asdfklj asdflkj; asdf def 1 asdf asdf def pqrdss"

matches = re.finditer(regex, test_str, re.MULTILINE)

for matchNum, match in enumerate(matches):
    matchNum = matchNum + 1
    for groupNum in range(0, len(match.groups())):
        groupNum = groupNum + 1
        print (match.group(groupNum))
以下是一个示例:

import re
results = re.findall('def\s*(\w+)','def gdi def hrs')

若要执行此操作,您应该将查找组和非捕获组结合使用


(?你需要给出一个更具体的例子。空格分隔的单词是你要处理的唯一一种字符串吗?是的,我们可以假设我们处理的是空格分隔的字符串。所以你总是在“def”后面找单词?或者它可以是任何东西?我总是在找“def”。我需要找到“def”后面的下一个单词。如果我们正在考虑的测试字符串是“abc def ghi pqr”,它应该返回“ghi”。我希望我现在已经清楚了。谢谢。
re.search(r“def\s+(\w+),“abc def ghi”)
但是如果字符串是“abc def ghi pqr”,它不会返回“ghi pqr”?@UnderWood-更改为\w,这样它就不会在下一个单词后面留下空格“abc def ghi jkl def pqr”,它只返回“pqr”。如何同时获得“ghi”和“pqr”?提前谢谢。@UnderWood-我在开始时删除了。*,因此它可能会捕获更多def,因为您在group@UnderWood你找到解决办法了吗?
import re

string = 'abc def ghi jkl def pqr'
print(re.findall(r'(?<=def)(?:\s)(\w+)', string))
>> ['ghi', 'pqr']