2011-03-03 58 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