如何从没有空格的字符串中提取某些特殊字符之间的所有单词?

时间:2015-06-08 20:42:35

标签: java regex string

我有一个字符串,这是从解析推文内容的网站获取的结果,这里是字符串:

“1 \ TI \ T_ \ TPRP \ TPRP \ T_ \ T2 \ tnsubj \ T_ \ T_ \ N 2 \ tneed \ T_ \ TVB \收费电视控股\ 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_ \锡\锡\ 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_ \ n8 \ TCAT \ T_ \ 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”之间的所有单词,换句话说我想要名词,我希望输出为“单词”,“奇迹”,“猫” ,“煎饼”,“法国”。

我尝试了以下代码:

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字符串错了..它不起作用似乎无法找到我想要的单词..

有人能告诉我应该怎么解决它?

P.S。关于标签字符看起来像“/ t”,我实际上打印了整个网站的结果,但当我得到结果作为字符串时,我猜他们只是一个反斜杠和一个“t”而不是仍然是制表符。

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

"\\\\t([^\\\\]*?)\\\\t_\\\\tNN"

请参阅Ideone Demo

请参阅RegEx Demo