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