为什么没有在python中使用指定的正则表达式找到它?

时间:2019-07-10 21:46:25

标签: python regex

我正在python中使用此正则表达式:

=\s*[^(]([Tt]rue|[Ff]alse)

当我执行它时,它与显示的项目匹配。但是我也希望它与第7个项目匹配,因为正则表达式的开头说一个'=',后跟0个或多个空格字符(即空格,制表符等),并且在第7行上有0个空格字符。那为什么不匹配呢?

1 password = True (matched)
2 password = true (matched)
3 password = false (matched)
4 password = False (matched)
5 password "False"
6 password = 'True' (matched)
7 password =False (not matched but expected to be)
8 password =dict(required=False, default=None)

3 个答案:

答案 0 :(得分:2)

模式是等号=,后跟零个或多个空格\s*其后是除'(' [^(]以外的其他任何字符用真假([Tt]rue|[Ff]alse)

在第7项中,“(除”模式以外的任何字符均由字母F匹配。“ alse”之后是“ true”和“ false”一词。

答案 1 :(得分:2)

[^(]表示您要求的字符(在可能为空的空格序列)与单词(True之间不是False。那一行上没有这样的字符。

您可以将该字符设为可选。

^[^(\n]*=\s*[^(]?([Tt]rue|[Ff]alse)

DEMO

答案 2 :(得分:0)

[^(] 

ahh编辑正确之后。这意味着一个不可能的符号-= {\ s *和THEN [Ff] alse之后的[^'(']符号,因此只有在=和[Ff] alse之间的某个符号时,它才会批处理