java正则-取出指定字符串之间的内容
往往有很多需求,需要取出指定字符之间的字符串,取的方式有多种,关系到重复使用的问题,如abc123abc456abc,如果使用正则取出abc之间的内容,这里可能有两种结果,
结果1: 123 456
结果2: 123
为什么有两种结果呢
这里的一个区别就是,abc能否重复使用的问题,结果1就是abc重复使用了,而结果2中取法,abc不可重复使用
下面代码取出abc之间的内容
结果为:
张小名
李小花
王力
很明显,上面的正则取法是不可重复的匹配法,每次匹配后,abc不可下次使用
我们在改下代码
运行结果:
这里我们可以看到,这种正则匹配是可以重复使用abc的,也就是指针没有下移,把abc之间的内容都娶到了
以上是两种正则的区别,需要根据实际场景来使用
关于正则表达式引擎,可以参考下图来学习
(?:pattern) 与 (?=pattern)也有一些区别,主要在于消耗字符、是否输出匹配结果方面,如下图已经说得很清楚了
使用grep搜索多个字符串
Grep的多条件搜索模式
grep支持三种正则表达式语法:Basic、Extended和Perl正则表达式。当没有指定正则表达式类型时,grep将搜索模式解释为Basic基本正则表达式。
使用多条件搜索模式时,请使用|管道符。使用grep的基本正则表达式搜索多个条件,语法如下:
当使用基本正则表达式时,需要使用\\转义符为|管道符转义。
如果使用扩展模式,可以添加-E参数。使用扩展模式,就不需要为|管道符添加转义符了。也可以使用egrep命令,这个命令和grep -E用法一样。
使用实例
检查操作系统是否开启虚拟化功能,使用Basic基本模式:
使用扩展模式就不需要添加\\转义符了,扩展模式使用方式:
默认情况grep区分大小写,如果需要忽略大小写,可以添加-i参数:
总结
grep是一个强大的命令行工具,它允许在一个或多个文件中搜索与正则表达式匹配的行,并将匹配的结果写入标准输出。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。