在egrep工作的正则表达式,但不在sed中

时间:2015-10-18 17:02:17

标签: regex shell unix sed grep

我试图在文本中识别国家/地区缩写。

egrep "^[A-Z]{2}$" file

似乎有效。但是,当我在sed上尝试正则表达式时,它无法正常工作。这就是我正在使用的

sed 's/^[A-Z]{2}$/someCountry/' file

我做错了什么?

2 个答案:

答案 0 :(得分:2)

POSIX sed使用 BRE 基本正则表达式)。在那些中,您可以使用等效的{2},但必须转义 大括号egrep支持 ERE 扩展正则表达式)。作为扩展BRE的副作用,转义规则是不同的(使得结果表达式更易于编写)。

供参考:

  

当匹配单个字符,子表达式或反向引用的BRE后面跟着格式为"\{m\}""\{m,\}""\{m,n\}"的区间表达式,以及区间表达式应匹配BRE重复连续出现的匹配。 m n 的值是0 <= m<= n<= {RE_DUP_MAX}范围内的十进制整数,其中 m 指定出现的确切或最小数量和 n 指定最大出现次数。表达式"\{m\}"应与前一个BRE的 m 出现完全匹配,"\{m,\}"应匹配至少m次出现,"\{m,n\}"应匹配<之间出现的任意数量< em> m n ,包括在内。

答案 1 :(得分:1)

man sed并搜索&#34;扩展&#34;。 egrep grep-e,其中有一个标记(在某些平台上为\),用于扩展&#39;正则表达式,和sed有类似的标志。否则语法不同,您必须使用var p = $.Deferred().resolve().promise(); $('div.box').each(function(i, div) { p = p.then(function() { $(div).fadeIn().delay(5000).fadeOut().delay(1000); return $(div).promise(); }); }); 更多。