从文本文件中删除注释

时间:2014-02-08 10:59:51

标签: java regex string parsing

以下是示例文本

|英语单词列表。评论从竖线开始。每一站  |字是在一行的开头。

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

       | PRONOUNS FORMS
         | 1st person sing

我|主题,当然总是大写

我|对象

我的|所有格形容词

我想删除栏右侧发生的所有文字,包括栏本身,我在正则表达式上没什么困难。

以下是我一直在尝试的代码

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);

我输出的是字符串“我是我的”,其他一切都应该消失

3 个答案:

答案 0 :(得分:2)

  1. String是不可变的,因此您需要将replaceAll值分配给line本身。
  2. 您需要在正则表达式中转义|,因为|本身就是正则表达式(\\|
  3. 您不必使用字符类 - 将其括在方括号内,因为它会找到您的|并只是替换它
  4. 代码(靠近regex):

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

    输出:

    i 
    

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

答案 1 :(得分:1)

这个正则表达式与|后面的部分匹配包括|。

\|.+$

答案 2 :(得分:0)

这是一个你可以适应你的情况的例子,使用substring方法并传递beggining索引和垂直条的出现的索引。

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