我想匹配任何字符(不区分大小写),除非前面有一个单引号,后面跟着文本On Error后藤:
匹配:
on error goto err_handler
if aap = 0 then on error goto Myerrorhandler
on error goto errorhandler1
on error goto errorhandler2
不匹配:
' on error goto errorhandler3
' if aap =0 then on error goto errorhandler4
Any line not containing On Error Goto
我试过了:[^']*(On Error Goto)
,但是没有用。
它用于测试过程中是否使用了Errorhandler
谢谢你,谢谢
2条答案
按热度按时间34gzjxbg1#
使用
使用
i
不区分大小写模式和m
多行模式。请参见proof。说明
y3bcpkx12#
更新了regex测试用例的链接:https://regex101.com/r/UYll0h/6
因为当
'
不存在的时候就不可能有字符,所以你需要使用一个前瞻Assert。由于在
on error goto
之前的行(如if aap = 0 then on error goto Myerrorhandler
行)中也可能存在代码的其他字符(除了'
),因此要处理这些字符,您还需要设置一个条件来检查是否存在除'
之外的任何字符。这将由([^']+)?
完成。^(?!')([^']+)?on error goto
(?)
被称为look-ahead。它检查里面的字符是否存在。与[]
不同,(?)
即使没有字符也会Asserttrue。例如,[a]
将检查第一个字符是否为'a',但它之后的任何表达式都将从第二个字符开始检查。另一方面,(?=a)
将检查第一个字符是否为'a',并且它之后的任何表达式都将从第一个字符开始检查。换句话说,如果没有找到匹配项,则前瞻不会将正则表达式引擎移动到下一个字符。