Regex Python正则表达式查找单词后的第一个单词

Regex Python正则表达式查找单词后的第一个单词,regex,python-2.7,Regex,Python 2.7,我对regex不熟悉。 如果这是一个愚蠢的问题,我很抱歉问你这个问题。 我有一个长字符串(见下文) 我正在尝试提取子字符串“7206VXR”。 从这里检查后,我找到了解决问题的有效方法 解决方案1是 re.search(r"Cisco((\s*)(\w*).*)(bytes of memory) uptime = hostUptimeRegex.group(3) print "hostUptimeRegex.group(3) is :" + uptime + ":" 我想知道的是,有没有更好

我对regex不熟悉。 如果这是一个愚蠢的问题,我很抱歉问你这个问题。 我有一个长字符串(见下文)

我正在尝试提取子字符串“7206VXR”。 从这里检查后,我找到了解决问题的有效方法 解决方案1是

re.search(r"Cisco((\s*)(\w*).*)(bytes of memory)
uptime = hostUptimeRegex.group(3)
print "hostUptimeRegex.group(3) is :" + uptime + ":"
我想知道的是,有没有更好的方法

在以“Cisco”开头,以“bytes of memory”(内存字节)结尾的句子中找到第一个“单词”


Cisco\s*(\w+(=.*字节内存)
?是您要查找的内容,始终是“Cisco”之后的第一个非空白字符串?@ctwheels谢谢!那很有帮助@CAustin嗨,是的,在这种情况下。但还有另一种情况,我想选择“Cisco”之后和“bytes of memory”之前的所有非空格(即单词),谢谢您的帮助!使用
\s+
代替
\s*
,因为您至少需要一个空间。此外,由于使用了只返回捕获组(如果有的话)的
re.search
方法,因此使用前瞻是没有用的<代码>Cisco\s+(\w+)\s.*字节内存。最终使用
re.DOTALL
标志。或者使用,您可以将重复捕获组功能用于此模式:
Cisco\s+(?:(\s+\s+)*?内存字节
(请参阅文档)
re.search(r"Cisco((\s*)(\w*).*)(bytes of memory)
uptime = hostUptimeRegex.group(3)
print "hostUptimeRegex.group(3) is :" + uptime + ":"