2015-09-13 329 views
1

我需要一個純的正則表達式(沒有語言)以分離該輸入陣列的數字:正則表達式從逗號分隔號分隔的列表

L1,3,5,0,5,80,40,31,0,0,0,0,512,412,213,900 

問題:

  1. 第一字段(L1)是固定的。該數組始終始於L1
  2. 其他字段將始終爲0或正數。
  3. 但我需要分別獲取各數據,所以這將是:
    一種用於第二數據(在實施例編號3)
    一種用於第三數據(在實施例編號5)
    正則表達式的正則表達式... 。
    一種用於第十六數據(在實施例編號900)

我試圖此正則表達式[^;,]*,但它不是能夠分別獲得每個數據正則表達式。

誰能幫我看這個問題?

+1

你能幫助我們理解爲什麼這必須是純粹的正則表達式?這不是最好的工具。 –

+0

要獲得每個字段,你需要一個單獨的捕獲組 – dawg

+1

不會'L'(\ d +)'足矣,你都可能會根據語言相匹配的數組你areusing –

回答

0

試圖提煉耶的做法,使得更少的捕獲組被使用:

第四欄可以匹配

^L1(?:,(\d+)){3} 

Online Test

第五個字段可以通過匹配

^L1(?:,(\d+)){4} 

3

隨着 '純正則表達式' 讓每一個領域,你必須使用單獨的捕捉組:

^L(\d),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)$ 

Demo

(注:在Python,Perl中,紅寶石,爪哇,等等,你可以有一個全球性的發現和捕捉像/(\d+)/g但畢竟是語言收拾比賽進入列表...)


如果你只想要一個特定的領域,你可以使用編號重複。

^L(\d)(,(\d+)){N} 

捕獲組3將永遠是場N-1所以要捕捉213,第15場,在你的榜樣:

^L(\d)(,(\d+)){14} 

Demo2

+0

我讚賞你的幫助,但也許我不是很清楚。例如,我的問題是,我需要一個正則表達式讓我們說只得到第四列。在你的表達中,我們同時獲得了所有的列。 –

+1

看到編輯,你可以做'^ L(\ d)(,(\ d +)){N}' – dawg

+0

我試過了,但它除了列上的嚴格數字之外還捕獲了很多組。我試過^ L \ d(,\ d +){14},但它仍然得到逗號..任何方式拋出該逗號? –

相關問題