我需要在这个特定句子中提取“NN”后面的单词吗?
(ROOT (SBARQ [26.015] (WHNP [1.500] (WP [1.051] What)) (SQ[23.912] (VBZ[2.669]'s)
(NP [19.076] (PRP$ [3.816] your) (NN [9.843] thought))) (. [0.002] ?)))
所以,当我解析这个...使用正则表达式时,我只需要提取'think'这个词。
我该怎么做?
我的代码:
String pattern = "\NN \[[0-9]+(?:\.[0-9])?\] (.)\)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(st); while(m.find()) {System.out.println(m.group());}
output: (NN [9.843] thought))) (. [0.002] ?)))
但我只想要'思想'
答案:
得到它:-)感谢人们。
String pattern = "NN \\[.*] (\\w+)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(st);
while(m.find())
{System.out.println(m.group(1));}
输出:想法
答案 0 :(得分:2)
鉴于格式不允许太多的变态,这应该得到一个词:
\(NN \[[^\]]*\] ([^\)]*)\)
然后做s.th.喜欢
if (matcher.find(yourstring)) {
theword = matcher.group(1);
}
答案 1 :(得分:0)
以下正则表达式将与NN块匹配,其中(。*)组将选择“思考”。
\(NN \[[0-9]+(?:\.[0-9]*)?\] (.*)\)
我总是发现正则表达式测试床对这类问题非常有用。我建议使用: http://www.gskinner.com/RegExr/