簡體   English   中英

從字符串中提取數字的正則表達式

[英]regular expression to extract number from string

我想從字符串中提取數字。 這是字符串

#all/30

我只想要30 如何提取? 我嘗試使用:

echo "#all/30" | sed 's/.*\/([^0-9])\..*//'

但是什么也沒發生。 我應該如何寫正則表達式? 對不起,英語不好。

您可以考慮使用grep從這樣的簡單字符串中提取數字。

echo "#all/30" | grep -o '[0-9]\+'
  • -o選項僅顯示與模式匹配的匹配部分。

您可以嘗試以下sed命令,

$ echo "#all/30" | sed 's/[^0-9]*\([0-9]\+\)[^0-9]*/\1/'
30
  • [^0-9]* [^...]是一個否定的字符類。 它匹配任何字符,但不匹配否定字符類中的任何字符。 [^0-9]*匹配零個或多個非數字字符。
  • \\([0-9]\\+\\)捕獲一個或多個數字字符。
  • [^0-9]*匹配零個或多個非數字字符。
  • 將匹配的字符替換為組1中的字符將得到30
echo "all/30" | sed 's/[^0-9]*\/\([0-9][0-9]*\)/\1/'

避免寫“。*”,因為它會消耗整個字符串。 默認匹配項總是貪婪的

echo "all/30" | sed 's/[^0-9]*//g'
# OR
echo "all/30" | sed 's#.*/##'
# OR
echo "all/30" | sed 's#.*\([0-9]*\)#\1#'

沒有更多關於可能的輸入字符串的信息,我們只能假設結構為#all/后跟數字(僅)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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