我正在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)
答案 0 :(得分:2)
模式是等号=
,后跟零个或多个空格\s*
,其后是除'(' [^(]
以外的其他任何字符用真假([Tt]rue|[Ff]alse)
在第7项中,“(除”模式以外的任何字符均由字母F匹配。“ alse”之后是“ true”和“ false”一词。
答案 1 :(得分:2)
[^(]
表示您要求的字符(在可能为空的空格序列)与单词(
或True
之间不是False
。那一行上没有这样的字符。
您可以将该字符设为可选。
^[^(\n]*=\s*[^(]?([Tt]rue|[Ff]alse)
答案 2 :(得分:0)
[^(]
ahh编辑正确之后。这意味着一个不可能的符号-= {\ s *和THEN [Ff] alse之后的[^'(']
符号,因此只有在=和[Ff] alse之间的某个符号时,它才会批处理