排除包含某个字符串的正则表达式

排除包含某个字符串的正则表达式

 

一直困扰着我,今天在一个国外的网站上找到答案,虽然没完全解决问题,但希望能抛砖引玉

比如有以下代码:

 

if a=b then

    i love u

    how are you

end if

 

我想选中不含有if的语句。也就是if语句块里包含的那两句话。

 

网上见过此方法:

^[^(if)]+$

但这是错误的,因为只含有i或f的行也被排除在对象外,如"i love u"

 

正确的应该是:

^([^f]|[^i]f)+$

解释:

① ^ 句子开头

② [^f]排除掉f (if也是排除对象)

③ [^i]f排除掉if   (如果没有②,则nfdfefgfaflf等"_f"字符串都被选中,加上②后,不以i开关的f都被干掉啦)

——②或③,则生成了排除掉if的条件

④ +表示括号中的字符重复1次以上

⑤ $ 句子结尾

在EmEditor的正则表达式下测试通过。

 

这方法比较笨,只限于两字符,如果排除的字符串为congratulation这样的东西,就麻烦了。据偶现在的水平,还不知道怎么做才是最方便的。

 

如果 .*[^(congratulation)].* 能办到就好了:(

 

当然也可以用间接的方法,比较通用:

①先置换 if/w* 为 /1☆

☆为全文没有的特殊字符

②然后再检索^[^☆]$ -- 这样就排除了含有☆的行

③最后清除掉☆

 

但感觉此为下策了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值