1

sed的正则用的是BREs/EREs,不支持非贪婪模式。当然有一些方法可以实现非贪婪,比如:

$ echo abcOabcdOabc | sed 's/.*O//'

结果是abc

$ echo abcOabcdOabc | sed 's/[^O]*O//'

结果是abcdOacb,变相实现了非贪婪的匹配。

但如果是这种情况:

<div>...</div>blabla<div>...</div>

如果想用sed去除前后的<div>...</div>只留下blabla,用s/<div>.*<\/div>//会把blabla也吃掉,又没法用[^div]来实现对div整串的不匹配,那么要怎样实现非贪婪的匹配呢?

betakuang 272
2014-12-10 提问
2 个回答
1

我试了下这样可以, echo '<div>...</div>blabla<div>...</div>' | sed 's/<div>[^<]\+<\/div>//g';

如果你是要从html/xml中提取信息的话, 还是用支持DOM操作的东西作处理吧;
正则太费时间, 正确性也不好把握

-1

为啥不用grep?

撰写答案

你可能感兴趣的

推广链接