Answers:
您正在寻找非贪婪(或懒惰)的比赛。要在正则表达式中获得非贪婪匹配,您需要?在量词后使用修饰符。例如,您可以更改.*为.*?。
默认情况下grep不支持非贪婪修饰符,但是您可以使用grep -PPerl语法。
.与换行符匹配的模式称为DOTALL或单行模式。Ruby是唯一将其称为multiline的工具。在其他形式中,多行是允许锚点(^和$)在行边界匹配的模式。Ruby没有等效的模式,因为在Ruby中它们始终以这种方式工作。
-P对我来说是一个全新的东西,我开心地偷偷摸摸地走了好多年,只用了-E...浪费了这么多年!-关于自己的注意事项:作为(甚至更多!)常规内容来重新阅读手册页,您永远不会消化足够的开关和选项。
grep上不支持-P,但是如果使用egrep,可以使用该.*?模式来达到相同的结果。egrep -o 'start.*?end' text.html
-P但-E会调用,egrep因此建议的.*?效果很好。