簡體   English   中英

在sed上使用負數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM