我正在读取文件中的行,我想删除只包含字母,冒号,括号,下划线,空格和反斜杠的行。这个正则表达式工作正常,找到那些线......
[^A-Za-z0-9:()_\s\\]
...作为原始字符串传递给re.search()。
现在,我需要补充一点,这些行不能以THEN或ELSE开头;否则他们不应该匹配,因此免于被删除。
我尝试从括号中取出^并在括号内的表达式之前添加负面的lookbehind,就像这样......
r'^(?!(ELSE|THEN))[A-Za-z0-9:()_\s\\]'
...但现在它只匹配每一行。我错过了什么?
答案 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
上的示例