我有一个字符串,该字符串是从网站上解析tweet内容获取的结果,这是字符串:
“ 1 \ tI \ t_ \ tPRP \ tPRP \ t_ \ t2 \ tnsubj \ t_ \ t_ \ n2 \ tneed \ t_ \ tVB \ tVBP \ t_ \ t0 \ tnull \ t_ \ t_ \ n3 \ tmore \ t_ \ tJJ \ tJJR \ t_ \ t4 \ tamod \ t_ \ t_ \ n4 \ twords \ t_ \ tNN \ tNNS \ t_ \ t2 \ tdobj \ t_ \ t_ \ n5 \ tlike \ t_ \ tIN \ tIN \ t_ \ t4 \ tprep \ t_ \ t_ \ n6 \ tmarvel \ t_ \ tNN \ tNN \ t_ \ t5 \ tpobj \ t_ \ t_ \ n7 \ tor \ t_ \ tCC \ tCC \ t_ \ t6 \ tcc \ t_ \ t_ \ t_ \ n8 \ tcat \ t_ \ tNN \ tNN \ tNN \ t_ \ t6 \ tconj \ t_ \ t_ \ n9 \ tor \ t_ \ tCC \ tCC \ t_ \ t6 \ tcc \ t_ \ t_ \ n10 \ tpancake \ t_ \ tNN \ tNN \ t_ \ t6 \ tconj \ t_ \ t_ \ n11 \ tor \ t_ \ tCC \ tCC \ t_ \ t10 \ tcc \ t_ \ t_ \ n12 \ tfrance \ t_ \ tNN \ tNN \ t_ \ t10 \ tconj \ t_ \ t_“,” text“:”我需要更多诸如奇迹,猫,煎饼或法国之类的词”
我想获取介于“ \ t”和“ \ t_ \ tNN”之间的所有单词,换句话说,我想要名词,我希望输出是“ words”,“ marvel”,“ cat”,“ pancake” ”,“法国”。
我尝试了下面的代码:
private void regex(String s){
if(s.indexOf("error") >= 1){
Toast.makeText(this, "Sorry the site failed again it's not my fault :(",
Toast.LENGTH_SHORT).show();
}
else{
Pattern pattern = Pattern.compile("\t(.*?)\t_\tNN");
Matcher matcher = pattern.matcher(s);
System.out.println(s);
if (matcher.find()) {
String result = matcher.group(1);
System.out.println(result);
}
}
}
我确定我得到了pattern.compile字符串错误..似乎找不到我想要的单词,这是行不通的。
谁能告诉我该如何解决?
附言关于制表符看起来像“ / t”,实际上我将整个网站打印为结果,但是当我将结果作为字符串获得时,我想它们只是反斜杠和“ t”,而不是制表符。
最佳答案
您可以使用以下内容:
"\\\\t([^\\\\]*?)\\\\t_\\\\tNN"
见Ideone Demo
见RegEx Demo
关于java - 如何从没有空格的字符串中提取某些特殊字符之间的所有单词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30718713/