我正在尝试使用JavaScript中的RegExp解析一串文本。让我们说它看起来像这样:
var myString = "This is a string of text (item item item) and more text here.";
我需要匹配单词“item
”的第一个匹配项,因为它是括号内的第一个项目。我无法弄清楚如何编写一个只匹配一组括号内第一项的模式。
你们中的一些人可能想要这样想:假装我正在解析一串Lisp并希望匹配所有汽车。
提前致谢。
答案 0 :(得分:2)
如果您可以避免检查左括号,可以使用前面的右括号。
item(?=[^\)]*\))
您还可以使用捕获组:
\(.*?(item).*?\)
修改的
对于在括号中某处重复的单词至少一次:
\(.*?(\b\w+\b).*?\1.*?\)
编辑2
仅用于括号中的第一个字母数字字符集:
\([^\w]*(\b\w+\b).*?\)
或者更简单的替代方案:
\(.*?\b(\w+)\b.*?\)
答案 1 :(得分:0)
答案 2 :(得分:0)
你不能制作一个与左括号不匹配的模式,因为Javascript正则表达式不支持回顾。
您可能需要更新您的词法分析器代码以了解捕获组(或一般功能或方便的东西......),或者您需要重新构建代码,以便它可以处理您无法摆脱的额外帮助。