2011-03-03 57 views
1

我試圖讓數字/蜇傷了,看起來像這樣正則表達式嵌套值

"[123][456][abc]" 

字符串此外,我不希望包含「[」或「]」,我想保持價值分離。

+0

\ [(([\ d] | [az])+)\]但在包含「]」,我不知道如何指定哪個組 – Pardoner 2011-03-03 23:15:30

+0

你正在使用的語言會有很大的幫助 – Kyle 2011-03-03 23:23:21

+0

你是什麼意思的「包括」?唯一包含的是捕捉夥伴中的內容。此外,你寫的是無效的 - 那些外括號需要被轉義。至於「哪個羣體」......這些模式將與任何羣體相匹配;拔出特定的組取決於你的編程語言。 – 2011-03-03 23:25:07

回答

1

嘗試此尺寸。

/\[(\d+|[a-zA-Z]+)\]/ 

編輯:

如果你能支持前瞻和回顧後

/(?<=\[)(\d+|[a-zA-Z]+)(?=\])/ 

另一個編輯:

試試這個在JavaScript

var text = "[12][34][56][bxe]"; 
var array = text.match(/(\d+|[a-zA-Z]+)/g); 
+0

@Pardoner?那些不包括方括號。 – 2011-03-03 23:21:40

+0

是的,這有效,但我將如何得到第二和第三組? – Pardoner 2011-03-03 23:22:15

+0

@Pardoner什麼語言? – Kyle 2011-03-03 23:24:29

1

這將是一個很大更輕鬆如果我們知道這種語言。例如,在Javascript中你可以這樣做:

"[123][456][abc]".split(/[\[\]]/); 

,同樣在Python:

>>> import re 
>>> re.split(r'[\[\]]', "[123][456][abc]") 
['', '123', '', '456', '', 'abc', ''] 

我敢肯定有辦法在其他語言中要做到這一點,太。

+0

你的意思是你試圖用正則表達式和*沒有*分裂,對吧?因爲我確實使用了正則表達式。 – kojiro 2011-03-03 23:51:34

+1

@Pardoner:在JS中,'.split()'是一個正則表達式函數。 – Orbling 2011-03-04 00:10:17

1

http://www.regular-expressions.info/javascript.html,特別是「如何使用JavaScript RegExp對象」部分:如果你想要檢索的 這是匹配的字符串的一部分

,調用的的 exec()函數您創建的RegExp對象 ,例如:mymatch = myregexp.exec(「subject」)。這個 函數返回一個數組。數組中的第零個項目 將保留與常規 表達式匹配的文本 。以下項目 包含匹配的文本, 捕獲正則表達式中的括號, (如果有)。 mymatch.length表示match []數組的長度爲 ,比正則表達式中捕獲的 組的數量多 。 mymatch.index表示正則表達式匹配的主題字符串 中的字符 的位置。 mymatch.input保留 主題字符串的副本。

這解釋瞭如何訪問各個括號內的組。您可以使用該模式,如/\[(\w+)\]/g