我有一个字符串,该字符串是从网站上解析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/

10-12 21:38