只在没有空格的绝对空白行上返回True的正则表达式

dem*_*ist 0 python regex string

我想用来regex测试一个字符串是否-跟随一些有意的音符,或者是完全空白而没有任何类型的空格.

我在regex101.com上进行了测试,但我不明白这个$符号是如何不单独阻止该\n角色的匹配.

我如何调整我的陈述以符合我的期望?先谢谢你.

match(r"^(-.*|)$", "\n") is not None
#returns True

match(r"(^-.*$|^$)", "\n") is not None
#returns True
Run Code Online (Sandbox Code Playgroud)

Ara*_*Fey 5

问题是你使用$锚.来自文档:

'$'

匹配字符串的结尾在字符串末尾的换行符之前,并且在MULTILINE模式下也匹配换行符.

你必须使用\Z,它只匹配字符串的末尾:

>>> re.match(r'^(-.*)?\Z', '\n') is None
True
Run Code Online (Sandbox Code Playgroud)

或者,您也可以删除锚点并使用re.fullmatch:

>>> re.fullmatch(r'(-.*)?', '\n') is None
True
Run Code Online (Sandbox Code Playgroud)

  • 哦,是的,我肯定误解了这个问题. (2认同)