2011-12-09 74 views
0

我有一些環境變量正則表達式來單獨的環境變量爲列

我想將它拆分成多列(使用正則表達式僅),所以對於任何正常包膜乏我可以只使用=但對我來說我有一個名爲變種LS_COLORS(見下文),所以我怎麼能拆我的ENV瓦爾成單獨的列在這種情況下使用正則表達式?

USER=idptest1 
GROUP=support 
HOST=beetle 
LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35: 
G_BROKEN_FILENAMES=1 

我不能用(?<=^[\w]+)=之類的東西來分開嗎?如果我使用^[\w]+=它選擇name=(僅從名稱的一部分),它不從價值部分回暖。

您可以檢查here如果排在第一位的=突出顯示,我的工作就會完成。由於

+0

定義「只正則表達式」。你似乎在使用某種分割功能。如果效果更好,爲什麼不使用另一個?你使用什麼語言/工具? – Qtax

+0

@Qtax:假如我只需要突出顯示http://regexr.com/?2ve9r。我使用java btw。 – abi1964

+0

@Qtax:我主要是想用正回顧後發事端,比如'(<=^[\ w] +?)='作爲替代模式的'[\ w]'如果我使用一些字符它的工作原理,如果我想要什麼給出這樣的模式'(?<=^[\ w] +)='有可能嗎? – abi1964

回答

1
與喜歡簡單的東西

開始:

^(.*?)=(.*)$ 

這有和非貪婪捕獲組捕獲的變量名和貪婪捕獲組捕獲一切後,第一個「=」到最後作爲價值的線。

如果你有空白處置再加入

^\s*(.*?)\s*=\s*(.*?)\s*$ 
+0

正則表達式選擇所有的線,我不想,我只想選擇'='1號發生 – abi1964

+0

也許它確實在考慮你的正則表達式實現(這是不是清楚你的問題),在Java和Scala中我使用了很多,默認情況下是基於行的匹配,您可以重寫以匹配整個輸入。這在Java中稱爲DOTALL模式,可以使用(?s)內聯啓用。我確定你有一個等同的標誌來實現你的想法。 –