Нечувствительность к регистру Java не работает - PullRequest
10 голосов
/ 27 января 2011

Я пытаюсь удалить некоторые слова в строке с помощью регулярных выражений, используя приведенную ниже программу.Он удаляется правильно, но учитывает только регистр символов.Как сделать так, чтобы регистр не учитывался.Я сохранил (?1) в методе replaceAll, но он не работал.

package com.test.java;

public class RemoveWords {

    public static void main(String args[])
    {

        // assign some words to string

        String sample ="what Is the latest news today in Europe? is there any thing special or everything is common.";

            System.out.print(sample.replaceAll("( is | the |in | any )(?i)"," "));
    }
}

ВЫХОД:

what Is latest news today  Europe? there thing special or everything common.

Ответы [ 3 ]

32 голосов
/ 27 января 2011

Вам нужно поместить (?i) перед той частью шаблона, которую вы хотите сделать регистронезависимой:

System.out.print(sample.replaceAll("(?i)\\b(?:is|the|in|any)\\b"," "));
                                    ^^^^

Посмотреть это

Я заменил пробелы вокруг ключевых слов, которые нужно удалить, границей слова (\\b).Проблема возникает из-за того, что могут быть два ключевых слова одно за другим, разделенных одним пробелом.

Если вы хотите удалить ключевые слова, только если они окружены пробелом , вы можете использовать положительныесмотреть вперед и смотреть назад как:

(?i)(?<= )(is|the|in|any)(?= )

Смотри

4 голосов
/ 27 января 2011

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

package com.test.java;

public class RemoveWords {

public static void main(String args[]) {
  // assaign some words to string
  String sample ="what Is the latest news today in Europe? is there any thing special or everything is common.";
  String regex = "( is | the |in | any )"
  System.out.print
  (
    Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(sample).replaceAll("")
  );
 }
}
1 голос
/ 27 января 2011

изменить is на [iI][sS]

sample.replaceAll("( [iI][sS] ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...