2014-02-08 51 views
1

以下是样本文本删除文本文件中的注释

|英语停用词表。评论以竖线开始。每停止一次 |单词在一行的开头。

|下面的许多表格都非常少见(例如“你们自己”),但包括在内 |完整性。

 | PRONOUNS FORMS 
     | 1st person sing 

i |主题,当然大写当然

我|对象

我的|所有格形容词

我想删除所有出现在右侧栏的文字,包括栏本身,我在正则表达式中遇到了一点困难。

这是我一直在努力的代码

FileReader reader = new FileReader("C:\\Users\\Masood\\Desktop\\IR\\Programming\\Material\\stopwords.txt"); 
    StringBuilder sb = new StringBuilder(); 
    BufferedReader br = new BufferedReader(reader); 
    String line; 
    String source2 = null; 
    while ((line=br.readLine()) != null) { 
     line.replaceAll("[|(.*)]",""); 
     sb.append(line); 
    } 

    String source = sb.toString();  
    System.out.println(source); 

I输出是字符串“”我我我的',一切将会消失

+1

尝试此正则表达式的表达式:|(。*)[] [\ n]的 –

回答

2
  1. String是不可改变的,因此你需要replaceAll值赋给line本身。
  2. 您需要在您的正则表达式中逃脱|因为|是一个正则表达式本身(\\|
  3. 您不必使用字符类 - 方括号内封闭,因为它会找到你的|,只是更换

代码(力求贴近您的regex):

String line = "i | subject, always in upper case of course"; 
line = line.replaceAll("\\|(.*)",""); 
System.out.println(line); 

输出:

i 

正则表达式的解释: http://regex101.com/r/gY6wE1

0

下面是一个例子,你能适应你的情况,使用substring方法并传递起始索引和垂直条发生的索引。

public static void main(String[] args) { 
    String a = "i | subject, always in upper case of course"; 

    String b = "me | object"; 

    String c = "my | possessive adjective"; 

    System.out.println(a.substring(0, a.indexOf('|'))); 
    System.out.println(b.substring(0, b.indexOf('|'))); 
    System.out.println(c.substring(0, c.indexOf('|'))); 
} 

输出:

i 
me 
my 
1

这正则表达式匹配不落后于部分|包括|。

\|.+$