我在python中有以下解析场景,有行的情况:
{{ name xxxxxxCONTENTxxxxx /}}
{{ name }} xxxxxxxCONTENTxxxxxxx {{ name /}}
{{ name xxxxxxCONTENTxxx {comand} xxxxCONTENTxxx /}}
我需要做的就是使用regex对给定行所属的情况进行分类。在
我可以成功地在1)和2)之间进行分类,但在处理3)时遇到困难。在
捕捉1)我使用:
re.match('\s*{{[^{]*?/}}\s*',line)
捕捉2)我使用:
^{pr2}$然后升起一个标志来保持上下文,因为情况2)可以跨越多行。我怎样才能抓住第三个案例)??在
我当前尝试匹配的条件是测试:
- start with '{{'
- end with '/}}'
- with no '{{' in between
不过,我很难用正则表达式来表达这一点。在
条件:
非常适合于tempered greedy token。在
^{pr2}$见regex demo。在
(?:(?!{{|/}}).)*
匹配不是{{
和{/}}
)。锚(^
和$
)只允许匹配以{{
开头、以/}}
结尾且内部没有{{
的整个字符串。请注意,使用re.match
,您不需要^
锚定。在现在,为了只匹配第三种类型的字符串,您需要指定您的模式应该有
{....}
:见another regex demo
第1部分是上面描述的回火贪婪令牌,
{[^{}]*}
匹配一个{...}
子串,使得它在输入中是必需的。在相关问题 更多 >
编程相关推荐