[英]Using negative numbers with sed
使用sed
,我可以使用[0-9]
来匹配任何数字。 但是,这似乎只是在寻找正数。 我还要如何查找以-
开头的数字,例如-10
?
[0-9]
与数字0到9不匹配。它与字符0、1、2、3、4、5、6、7、8和9匹配。
要拥有它,需要在其前面加上-
字符,只需将其放在其中,并以反斜杠转义即可,因此它在正则表达式中没有通常的特殊含义。 因此\\-[1-9]
将匹配字符串-1,-2等,直到-9。
如果您希望它匹配任何负数,请使用:
\-[0-9]+
(“ +
表示“先前事物的一个或多个出现”,因此在这种情况下为“一个或多个数字”。)
如果您希望它匹配任何负数或正数,请使用:
\-?[0-9]+
( ?
表示“上一件事的发生次数为一或零”,因此此处的意思是“一或什么都不发生”。)
更新
@Jonathan Leffler指出,如果您的sed
版本不支持扩展的正则表达式,则以上操作将无效。 如果它们不起作用,请改用以下方法:
\-[0-9]\{1,\}
\-\{0,1\}[0-9]\{1,\}
同样,乔纳森(Jonathan)的答案也包括了这一点,它也将匹配前导+
,这在问题中没有要求,但可以肯定是一个很好的选择:
[-+]\{0,1\}[0-9]\{1,\}
这应该工作:
\-?[0-9]+
正则表达式[0-9]
匹配任何单个十进制数字。
要匹配sed
可选的带符号十进制整数,请使用:
[-+]\{0,1\}[0-9]\{1,\}
\\{0,1\\}
表示匹配前一个正则表达式(是-
或a +
)的0或1次出现,后跟\\{1,\\}
(一个或多个)数字[0-9]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.