2014-02-08 6 views
1

Образец текстаудалять комментарии из текстового файла

| Английский список стоп-слов. Комментарии начинаются с вертикальной полосы. Каждая остановка | слово находится в начале строки.

| Многие из приведенных ниже форм довольно редки (например, «сами»), но включены для | полнота.

 | PRONOUNS FORMS 
     | 1st person sing 

i | предмет, всегда в верхнем регистре, конечно

me | объект

мой | Притяжательное прилагательное

Я хочу удалить весь текст, имеющийся в правой части панели, включая сам бар, у меня мало трудностей в регулярном выражении.

Вот код, который я пытался

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

Попробуйте это регулярное выражение: | (. *) [] [\ П] –

ответ

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 

Regex объяснение: http://regex101.com/r/gY6wE1

0

Вот пример, который вы можете приспособиться к вашей ситуации, используйте метод подстроки и передайте индекс начала и индекс появления вертикальной полосы.

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

это регулярное выражение соответствует часть позади | включая |.

\|.+$ 
Смежные вопросы