[英]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.