使用JavaScript RegEx匹配括号括起的列表中的第一项

时间:2012-01-16 15:59:21

标签: javascript regex

我正在尝试使用JavaScript中的RegExp解析一串文本。让我们说它看起来像这样:

var myString = "This is a string of text (item item item) and more text here.";

我需要匹配单词“item”的第一个匹配项,因为它是括号内的第一个项目。我无法弄清楚如何编写一个只匹配一组括号内第一项的模式。

你们中的一些人可能想要这样想:假装我正在解析一串Lisp并希望匹配所有汽车。

提前致谢。

3 个答案:

答案 0 :(得分:2)

如果您可以避免检查左括号,可以使用前面的右括号。

item(?=[^\)]*\))

您还可以使用捕获组:

\(.*?(item).*?\)

修改

对于在括号中某处重复的单词至少一次:

\(.*?(\b\w+\b).*?\1.*?\)

编辑2

仅用于括号中的第一个字母数字字符集:

\([^\w]*(\b\w+\b).*?\)

或者更简单的替代方案:

\(.*?\b(\w+)\b.*?\)

答案 1 :(得分:0)

使用类似的东西:

/\((\w*?)(?:\s|\))/

实例:http://tinkerbin.com/EJyjEX30(点击运行以运行代码))

答案 2 :(得分:0)

你不能制作一个与左括号不匹配的模式,因为Javascript正则表达式不支持回顾。

您可能需要更新您的词法分析器代码以了解捕获组(或一般功能或方便的东西......),或者您需要重新构建代码,以便它可以处理您无法摆脱的额外帮助。