正则表达式

https://www.jianshu.com/p/9fd05dfdde48

背景

我经常使用sublime去处理很多文件, 利用强大的正则表达式, 将一些日志以及excel文本进行格式化为特定内容.
最近经常遇到只保留我需要的行, 其他行删除掉. 也就需要用到正则中的不等于, 找了好几次, 觉得还是有必要记下来留用, 不用每次都去google了, 毕竟网上的文章也不是都是对的, 每次都找很久.

语法

当我要找到不包含某些字符串(如test)时, 可以使用

 

^((?!test).)*$

效果图.png

解释

核心在于:

  • 向右(向后)搜索(?=regex)(?!regex)
  • 向左(向前)搜索(?<=regex)(?<!regex)
  1. 肯定式向前查找
    匹配字符序列Start后跟一个空格和Test字符序列(不区分大小写)
    正则模式:Start(?= Test)    //释义:?表示匹配0次或一次,?= Test,表示问号等于 Test,也就是匹配 Test一次或多次(注意Test前面有一个空格),从运行结果看没有区分大小写
  2. 匹配字符序列some,如果在同一句子中还存在字符序列some
    正则模式:some(?=.*some.*)
  3. 否定式向前查找
    匹配字符序列Start后面不存在test字符序列
    正则模式:Start (?!test)
    匹配Start 后面不存在test的行
    正则模式: ^.Start((?!test).)$
  4. 肯定式向后查找
    匹配前面有"rt"的字符序列Test
    正则模式:(?<=rt )Test
  5. 否定式向后查找
    匹配前面没有"rt "的字符序列Test
    正则模式:(?<!rt) Test

运行结果

Start(?= Test).png

some(?=.*some.*).png

Start (?!test).png

^.*Start((?!test).)*$.png

(?<=rt )Test.png

(?<!rt) Test.png

参考文章

正则表达式里字符串”不包含”匹配技巧
正则表达式向前查找向后查找,环绕或零宽断言



作者:一根弦的风筝
链接:https://www.jianshu.com/p/9fd05dfdde48
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值