Python 使用重新创建的组的正则表达式帮助

Python 使用重新创建的组的正则表达式帮助,python,regex,Python,Regex,我正在尝试匹配python中的rc update-s输出 m=re.match(r“^\s*(\w+)\s*\\\\s*{\s*(\w+)\s*}*$”,“网络1级2级”) 但是m总是None 对我来说,最困难的部分是让正则表达式匹配n个级别。我以为使用{}*会匹配n个级别,但只要添加{}就没有匹配项 谢谢。这里的{}很奇怪,这样使用时它们不是元字符,有什么目的,因为此时它们正试图匹配一个文本{,但匹配失败 用普通括号替换它们,它会起作用。花括号({}”)不会像您认为的那样起作用,至少在本例中是

我正在尝试匹配python中的
rc update-s
输出

m=re.match(r“^\s*(\w+)\s*\\\\s*{\s*(\w+)\s*}*$”,“网络1级2级”)

但是
m
总是
None

对我来说,最困难的部分是让正则表达式匹配n个级别。我以为使用{}*会匹配n个级别,但只要添加{}就没有匹配项


谢谢。

这里的
{}
很奇怪,这样使用时它们不是元字符,有什么目的,因为此时它们正试图匹配一个文本
{
,但匹配失败

用普通括号替换它们,它会起作用。

花括号({}”)不会像您认为的那样起作用,至少在本例中是这样

您似乎想要一个不匹配的组。对于Python的
re
,其语法为
(?:\s*(\w+)\s*)
,以匹配您的示例

通过对您的示例的更改,我得到:

>>> m = re.match(r"^\s*(\w+)\s*\|(?:\s*(\w+)\s*)*$", " network | level1 level2 leveln ")
>>> m
<_sre.SRE_Match object at 0x00F217B8>
>>> m.groups()
('network', 'leveln')
另一方面,在没有regexp的情况下,这看起来更容易解析

>>> m = re.match(r"^\s*(\w+)\s*\|((?:\s*\w+\s*)*)$", " network | level1 level2 leveln ")
>>> m.groups()
('network', ' level1 level2 leveln ')
>>> m.groups()[1].strip().split()
['level1', 'level2', 'leveln']