我有由包含可能包含數字,例如純數字和詞語,多行字符串中的正則表達式:如何創建,捕捉一切,這是不是一個純數字
1 11 blabla12_ho5::blabla14_ho4
我想去掉的話,只留下純淨的數字,這樣的結果將是:
1 11
我已經試過正則表達式「[^ ]*[^\d][^ ]*
」搭上話,並通過使用regsub
爲空字符串刪除它們。但它也會捕獲第二個數字並返回:
1
什麼是正確的正則表達式?
我有由包含可能包含數字,例如純數字和詞語,多行字符串中的正則表達式:如何創建,捕捉一切,這是不是一個純數字
1 11 blabla12_ho5::blabla14_ho4
我想去掉的話,只留下純淨的數字,這樣的結果將是:
1 11
我已經試過正則表達式「[^ ]*[^\d][^ ]*
」搭上話,並通過使用regsub
爲空字符串刪除它們。但它也會捕獲第二個數字並返回:
1
什麼是正確的正則表達式?
是設法抓住包含特殊字符,以及字母和數字,沒有發現純數字的字的正則表達式是:
\b[^ ]*[^\d ]+[^ ]*
字的邊界之後一連串的數字,然後單詞邊界:
\b(\d+)\b
你在找什麼是接近這個:
/\D(\d+)\D/g
捕獲數字和字母(不包括純數):\b(?!\d+\b)\w+\b
捕獲純數:\b(\d+)\b
不同的RegEx解析器將使用slightl y不同的語法。你試圖做這個正則表達式?
的回答你的問題在於貪婪與懶惰匹配。
這對你的問題有點正切,因爲你問的是RegEx的問題,但是對於你正在做的事情,如果你想做的只是前兩列並且你正在使用Linux,你可以做一些簡單的事情像
cut -d ' ' -f 1-2 myfile.txt
你可以使用grep:
echo "1 11 blabla12_ho5::blabla14_ho4" | grep -E -o "\b[[:digit:] ]+\b"
1 11
爲什麼downvote? – SIMEL 2012-08-04 16:38:28