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

问题描述:

我有一个字符串,它是通过解析一个鸣叫内容的网站获取的结果,这里是字符串:如何从一个没有空格的字符串中提取某些特殊字符之间的所有单词?

“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 \ tf \ 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”而不是制表符。

+0

是'\ t'在字符串中,反斜线和字母 “t” 或制表符?打印时会发生什么? –

+0

这是一个反斜杠和字母t是的,我从来没有试过只打印这两个字符,但是当我打印整个字符串时,它就像我提出的问题一样。 –

+0

然后尝试'\\ t(。*?)\\ t _ \\ tNN'作为您的模式。它可能将'\ t'作为标签读取,并且您需要将反斜杠转义为文字。 – TessellatingHeckler

您可以使用以下方法:

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

Ideone Demo

RegEx Demo

+0

太棒了!谢谢:) –

+0

乐于帮助:) –

+0

这适用于您的示例文本,但您确实需要确保您使用此解决方案后所要使用的单词中没有'\'。 – JimW