2
我有一個字符串,可以從空字符串到逗號分隔數字的任意列表。例如:"1,2,3"
是否有單個正則表達式替換分隔列表中的數字?
不幸的是,當我編寫刪除元素的代碼時,我有一堆if語句 - 主要是爲了處理它是列表中的第一個,最後一個還是唯一的元素。我一直認爲必須有更好的方式!
例如,我需要能夠移除元素 '2
' 在以下列表:
"1,2,3"
"1,3,2"
"2,1,3"
"2"
"12,2,21"
""
我有一個字符串,可以從空字符串到逗號分隔數字的任意列表。例如:"1,2,3"
是否有單個正則表達式替換分隔列表中的數字?
不幸的是,當我編寫刪除元素的代碼時,我有一堆if語句 - 主要是爲了處理它是列表中的第一個,最後一個還是唯一的元素。我一直認爲必須有更好的方式!
例如,我需要能夠移除元素 '2
' 在以下列表:
"1,2,3"
"1,3,2"
"2,1,3"
"2"
"12,2,21"
""
這應該做你想要什麼:
/(\b|,)2(\b|,)/
刪除(請參閱下面的替換)
我找不到一個簡單的單一表達式去除,所以它似乎最好的東西只是按順序匹配每個圖案:
echo "x,x,1,x,2,x,x" | sed -e 's/,x,/,/g; s/^x,//; s/,x$//; s/^x$//'
有點冗長,但非常可讀。
更換
echo "x,x,1,x,2,x,x" | sed -e 's/,x,/,y,/g; s/^x,/y,/; s/,x$/,y/; s/^x$/y/'
唉唉我忘了\灣這正是我正在尋找的,謝謝! – Zugwalt 2010-07-27 02:30:14
如果2在中間,這將刪除之前的逗號和之後的逗號。例如:echo「1,2,3」| sed -e's/\\(\ b,\\)2 \(\ b,\\)//'給你:「13」但應該給你「1,3」 – JasonWoof 2012-02-03 19:09:58