使用regexjava提取子字符串

使用regexjava提取子字符串,java,regex,Java,Regex,我有一个字符串,它有几个NP,在NP'之间,是我想要的数据。 但我只想要里面的NP数据,而不是外面的第一个NP 如何编写正则表达式从以下文本中提取DT、NN符号、DT和NN facade?我为每一个包含NP的文本找到了一个NP数据。我希望我能很好地解释这个问题 (ROOT (NP (NP (DT a) (NN sign)) (PP (IN on) (NP (NP (DT the) (NN facade)) (PP (IN of) (NP (DT the) (NN building))))

我有一个字符串,它有几个NP,在NP'之间,是我想要的数据。 但我只想要里面的NP数据,而不是外面的第一个NP

如何编写正则表达式从以下文本中提取DT、NN符号、DT和NN facade?我为每一个包含NP的文本找到了一个NP数据。我希望我能很好地解释这个问题

    (ROOT (NP (NP (DT a) (NN sign)) (PP (IN on) (NP (NP (DT the) (NN facade)) (PP (IN of) (NP (DT the) (NN building)))))))

此正则表达式将匹配您询问的所有数据:

\(DT\s\w+.{3}NN\s\w+\)
其中\DT\s\w+匹配限定词、空格和字符串、.{3}匹配和NN\s\w+\匹配名词、单数或质量。 使用regexpal匹配数据,但如果要在Java代码中使用它,则需要转义字符,使其看起来像这样:

Pattern p = Pattern.compile("\\(DT\\s\\w+.{3}NN\\s\\w+\\)");

请明白,SO不是一个你来放弃你的要求,让其他人开始为你工作的地方。从这个意义上讲,当请求代码帮助时,请包括您迄今为止编写的代码,并解释您的困境。我做到了,它给了我:graph:->sign NN root->a-DT det->facade NN prep_on->the DT det->building NN prep_of->线程main java.util.regex.PatternSyntaxException:index 33[DT\s[a-z]+\sNN\s[a-zA-z]附近的未闭合字符类+好的,现在看一看。它工作了;;但它只给了我一个指示,而不是建筑物和立面:/