嵌套值的正则表达式

时间:2011-03-03 23:12:49

标签: javascript regex

我正试图从一个看起来像这个

的字符串中获取数字/叮咬
"[123][456][abc]"

此外,我不想包含“[”或“]”,我希望将值保持分开。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

如果我们知道这种语言,这将会容易得多。例如,在Javascript中你可以这样做:

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

和Python类似:

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

我确信在其他语言中也有办法做到这一点。

答案 2 :(得分:1)

请参阅http://www.regular-expressions.info/javascript.html,特别是“如何使用JavaScript RegExp对象”部分:

  

如果你想检索部分   匹配的字符串,调用   RegExp对象的exec()函数   你创造的,例如:mymatch =   myregexp.exec( “对象”)。这个   function返回一个数组。第0个   数组中的项将保存文本   这与常规相匹配   表达。以下项目   包含匹配的文本   在正则表达式中捕获括号,   如果有的话。 mymatch.length表示   match []数组的长度,即   比捕获的数量多一个   正则表达式中的组。   mymatch.index表示该字符   在主题字符串中的位置   正则表达式匹配的。   mymatch.input保留了一份副本   主题字符串。

这解释了如何访问各个带括号的组。您可以将其与/\[(\w+)\]/g

等模式结合使用