如何编写正则表达式匹配不含form.的所有行?
正则表达式匹配不包含"form."的行
你之前写的^.*(?!form\.).*$之所以会匹配所有行,是因为.*会先匹配整行内容,此时(?!form\.)的检查位置已经到了行尾,自然不会找到"form.",所以这个预查条件总是成立。
正确的写法是把负向预查放在行首,用来提前检查整行是否不存在"form.",正则表达式如下:
^(?!.*form\.).*$
逻辑解释:
^:匹配行的起始位置(?!.*form\.):负向预查,确保从当前位置(行首)开始,无论中间有多少任意字符(.*),都不会出现"form."这个子串.*:匹配符合条件的整行内容
用你提供的文本测试,这个正则会匹配以下行:
</div> form-group <label for="url">URL</label> </div>
而包含form.id、form.url的行会被排除在外。
如果你的正则环境支持多行模式(比如VS Code、Python的re.M flag等),直接使用这个表达式就能生效。
内容的提问来源于stack exchange,提问作者user19714507
相关产品推荐
相关产品推荐

