Python正则表达式:Line无法从某些单词开始,只能包含某些字符

时间:2017-04-18 21:36:10

标签: python regex

我正在读取文件中的行,我想删除只包含字母,冒号,括号,下划线,空格和反斜杠的行。这个正则表达式工作正常,找到那些线......

[^A-Za-z0-9:()_\s\\]

...作为原始字符串传递给re.search()。

现在,我需要补充一点,这些行不能以THEN或ELSE开头;否则他们不应该匹配,因此免于被删除。

我尝试从括号中取出^并在括号内的表达式之前添加负面的lookbehind,就像这样......

r'^(?!(ELSE|THEN))[A-Za-z0-9:()_\s\\]'

...但现在它只匹配每一行。我错过了什么?

2 个答案:

答案 0 :(得分:1)

只需使用替换:

^(?:THEN|ELSE|[A-Za-z0-9:()_\s\\]*$)

并删除匹配模式的行。

答案 1 :(得分:1)

^(?:(?:.*[^A-Za-z0-9:()_\s\\])|(?:THEN|ELSE)).*$

细分

^(?:                                        ).*$  #  Starts with
    (?:                      )|(?:         )      #  Either
       .*[^A-Za-z0-9:()_\s\\]                     #  Anything that contains a non-alphanumeric character
                                  THEN|ELSE       #  THEN/ELSE

请参阅regex101.com

上的示例