2015-03-16 5 views
0

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

String tadData=tag; // it contains that string 
tadData.replaceAll("\\<!--.*?\\-->", ""); 

Мне нужно удалить слова между <!-- --> этого тега.

Строка присутствует на изображении ниже.

enter image description here

Пожалуйста, помогите мне.

+3

_standard совет не использовать регулярные выражения для XML parsing_ – bsiamionau

+0

'Строка # replaceAll (регулярное выражение, замена)' будет заменить весь регулярное выражение с заменой, так что ваш '' также заменяются –

+0

я попробовал этот же, но по-прежнему не заменяя данные – addy

ответ

-1

Вы можете попробовать это:

tadData.replaceAll("\\<!--.*\\-->", ""); 

Если вы хотите, чтобы соответствовать слово между тегами затем использовать это регулярное выражение

\<!--(.*?)\--> 

EDIT: -

Если вы хотите сохраните теги, затем просто замените "" на "<!-- -->", т. е.

tadData.replaceAll("\\<!--.*\\-->", "<!-- -->"); 

или ваш собственный код только с небольшим изменением

tadData.replaceAll("\\<!--.*?\\-->", "<!-- -->"); 
+0

это не только удалит слова между ними, но также и теги '<-- -->' –

+0

, и теперь вы копируете мой ответ !! хороший! :) – aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

+0

@ Махдад: - Что? : O Вы с ума сошли? –

0
tadData.replaceAll("(<!--)(.*?)(-->)", "$1$3"); 

Эта линия будет разделить строку на 3 groups.Using второй аргумент, и может получить любой из группы.

Средство. Первая строка даст вам выход как (из-за группировки $ первой и третьей групп).

tadData.replaceAll("(<!--)(.*?)(-->)", "$2"); 

Эта линия будет дать и строку, между строками «»

+1

Вы даже прочитали вопрос? Пожалуйста, прочитайте это снова! –

+0

Можете ли вы сказать мне ожидаемый результат от него выше вопроса? –

+0

** Для ввода ** ' OK' *** выход должен быть ***' OK' –

0

Если регулярным выражением, что не является обязательным, я попытался это путем проверки строки файла построчно следующим образом,

ArrayList<String> lines = new ArrayList<>(); 
    File file = new File("path_and_file_name"); 
    BufferedReader br = new BufferedReader(new FileReader(file)); 
    String line = null; 

    boolean found = false; 
    while((line = br.readLine()) != null) { 
     if(line.matches("(.*)<!--(.*)") && line.matches("(.*)-->(.*)")) { //complete comment in one line so found is false. 
      found = false; 
      lines.add("<!-- -->"); //remove if you dont want to print <!-- --> 
     } else if(line.matches("(.*)<!--(.*)")) { //starting tag is found so found is true. 
      found = true; 
     } 
     else if(line.matches("(.*)-->(.*)")) { //after finding end tag found is false. 
      found = false; 
      lines.add("<!-- -->"); //remove if you dont want to print <!-- --> 
     } else { //if there are no any <!-- or --> tag 
      if(found == false) {//check if starting tag (<!--) has found. 
       lines.add(line); //if not added to lines. 
      } 
     } 
    } 

    for(String s: lines) { 
     System.out.println(s); 
    } 

входа файл

ewvfvwoirvorwijvriob 
revbgebvgeiogeb 
grbvgebv 
gebg 
bgbvgetbgtebgt 
<!--abcdef--> 
powdjciofwevrv 
vrwebvr 

<!-- 
wfpvjnfwpvg vhbrebiuge 
--> 

wfevfoienrfevoeigb 

<!-- 

ewopvifweopvoifewvjw 
weifjrweniovijovw 
ewfvfewv 

--> 

выход

ewvfvwoirvorwijvriob 
revbgebvgeiogeb 
grbvgebv 
gebg 
bgbvgetbgtebgt 
<!-- --> 
powdjciofwevrv 
vrwebvr 

<!-- --> 

wfevfoienrfevoeigb 

<!-- -->