我要匹配以下项中的this
(包括空格):
def foo():
"""
this
"""
pass
但是在这种情况下,我不想匹配任何东西:
# def foo():
# """
# this
# """
#
# pass
目前我正在使用"""(.*?)"""
使用DOTALL-flag来捕获第一个示例,但是显然这并不妨碍第二部分的匹配。
此正则表达式无法正常工作,因为它会在#
:^(?!#)"""(.*?)"""
答案 0 :(得分:1)
使用常见的解决方法:匹配不需要的内容并匹配并捕获所需的内容:
$ docker run -d --name tst -e TESTME=YES busybox tail -f /dev/null
55a3fe206588a8030365df30a670ca89a50c54816d044184d5870a4a76ce8199
$ docker exec -it tst sh
/ # echo $TESTME
YES
/ #
请参见regex demo。只收集第1组的值。
详细信息
(?sm)^#[^\r\n]*|"""(.*?)"""
-(?sm)
和re.MULTILINE
标志re.DOTALL
-一行的开头^
-一个#
字符#
-该行的其余部分(CR和LF以外的0个字符)[^\r\n]*
-或|
-一个"""
字符串"""
-组1:零个或多个字符,尽可能少(.*?)
-一个"""
字符串"""