2012-08-02 34 views
0

我有由包含可能包含數字,例如純數字和詞語,多行字符串中的正則表達式:如何創建,捕捉一切,這是不是一個純數字

1 11 blabla12_ho5::blabla14_ho4 

我想去掉的話,只留下純淨的數字,這樣的結果將是:

1 11 

我已經試過正則表達式「[^ ]*[^\d][^ ]*」搭上話,並通過使用regsub爲空字符串刪除它們。但它也會捕獲第二個數字並返回:

1 

什麼是正確的正則表達式?

回答

-1

是設法抓住包含特殊字符,以及字母和數字,沒有發現純數字的字的正則表達式是:

\b[^ ]*[^\d ]+[^ ]* 
+0

爲什麼downvote? – SIMEL 2012-08-04 16:38:28

2

字的邊界之後一連串的數字,然後單詞邊界:

\b(\d+)\b 
0

你在找什麼是接近這個:

/\D(\d+)\D/g 
0

捕獲數字和字母(不包括純數):\b(?!\d+\b)\w+\b
捕獲純數:\b(\d+)\b

0

不同的RegEx解析器將使用slightl y不同的語法。你試圖做這個正則表達式?

的回答你的問題在於貪婪與懶惰匹配。

0

這對你的問題有點正切,因爲你問的是RegEx的問題,但是對於你正在做的事情,如果你想做的只是前兩列並且你正在使用Linux,你可以做一些簡單的事情像

cut -d ' ' -f 1-2 myfile.txt 
0

你可以使用grep:

echo "1 11 blabla12_ho5::blabla14_ho4" | grep -E -o "\b[[:digit:] ]+\b" 
1 11