2016-01-20 21 views
0

我有n個數/每行的話,前一個清單:重複基團取代

12 
20 
24 
25 
26 
30 
31 
32 
39 
98 
103 
105 
106 
108 
116 
117 
122 
132 
138 
140 
etc... 

我想有一個正則表達式把他們在n個一組中的每一行,EX( N = 10):

12, 20, 24, 25, 26, 30, 31, 32, 39, 98, 
103, 105, 106, 108, 116, 117, 122, 132, 138, 140, 
etc... 

我目前能做到這一點有兩種替代對象:

Match: /(\w+)\n/ -> Replace with: "$1, " 
Match: /((\w+,){10})/ -> Replace with: "$1\n" 

但如何在一個嗎?

編輯:沒有代碼允許bois,只有正則表達式(匹配正則表達式和替換正則表達式)。如果它的事項,我會在崇高的文本來運行這個3.

+0

正如你在崇高的文字上做的那樣,也許使用更適合這個的另一種工具?像awk這樣的東西聽起來更適合這個任務,即:'awk'{printf「%s,」,$ 0}; NR%10 == 0 {printf「\ n」}'input_file' – Tensibai

+0

@Tensibai是的,我知道。但只用一個正則表達式就會很酷。 – Hrodger

+0

簡短的回答,你不能,在一個正則表達式中沒有辦法做兩個處理。您最終可以通過十個組來捕獲,但是您將無法進行有條件替換,具體取決於它是否是第10條記錄。) – Tensibai

回答

2

我可不是sayng很...

match: (\w+)\n(?:(\w+)\n)?(?:(\w+)\n)?(?:(\w+)\n)?(?:(\w+)\n)?(?:(\w+)\n)?(?:(\w+)\n)?(?:(\w+)\n)?(?:(\w+)\n)?(\w+)? 
replace with: $1,$2,$3,$4,$5,$6,$7,$8,$9,$10 

我不知道如何捕捉10組(\ w + ){10}

+0

感謝您的回答,但如果您有例如13個元素,則會失敗。 – Hrodger

+0

我剛剛編輯,將組更改爲(?:(\ w +)\ n)? – Aferrercrafter

+0

thoug它會把數字,但仍然會出現像 0,1,2,3,4,5,6,7,8,9 \ n 10,11,12,,,,, – Aferrercrafter