2014-03-28 62 views
0

我有這樣我如何寫這個正則表達式

var1=12.785, blah blah variable2=45.654 blih blah F=0.454 
var1=852.785, blah blah var2=45.654 // blih blah FGT=8738 
var1=12.785, blah blah DGSTE=4583; blih blah TEST=473.6984 
var1=12.785, blah blah var2=45.654 blih blah var3=48834 

的文件結構,我想正則表達式,這將使我僅將號碼`=簽署

12.785,45.654,0.454 
852.785,45.654,8738 
12.785,4583,473.6984 
12.785,45.654,48834 

(基本上變量=數字結構保存) 你能幫忙嗎? 我使用GNU的grep和sed(但有其他的過路費太)

+0

http://regex101.com/和http://debuggex.com有利於玩弄和測試正則表達式,順便說一句。 – TessellatingHeckler

回答

0

這將這樣的伎倆爲您的樣品數據:var\d=(\d+\.\d+) 第11組中包含的號碼。

如果你的數據真的很簡單,你甚至可以使用:\d+\.\d+,它不關心var前綴,但它確實可以很好地處理你的輸入數據。

+1

請注意,這與整數情況不匹配(例如,8738)可以通過用(((?:\ d + \。)?\ d +)'替換'(\ d +。\ d +)''來解決。 – Coenwulf

+0

對不起'varN'是我的錯,'var'可以是任何東西,還有如何將它與sed或grep一起使用? – statquant

0

嘗試Perl的一個班輪,因爲你正在使用從unix

perl -lne 'print join(",", (m/=([\d.]+)/g));' input.txt 

使用m/=([\d.]+)/g=後提取的所有號碼。假設所有號碼將採用xx.yy格式。否則,您必須將正則表達式[\d.]+更改爲\d+(\.\d+)?並進行一些邊界檢查。

相關問題