Как узнать символы в явном выражении - PullRequest
1 голос
/ 08 марта 2019

Привет, у нас есть шаблон и заменены символы. Пожалуйста, дайте нам знать, какие символы заменены на приведенное ниже регулярное выражение. Становится трудно узнать. Я хотел список символов, как здесь применяется regEx. Нужна помощь!! Пожалуйста, найдите ниже образец:

private String testRegEx(String myStr) {
    String regex = "[^\\s\\p{L}\\p{N}']|(?<=(^|\\s))'|'(?=($|\\s))";
    Pattern pattern = Pattern.compile(regex);       
    if(StringUtils.isNotEmpty(myStr)) {
        String firstString = myStr.replaceAll("\\r|\\n\"\'\"", "").replace("~^1~^", "").replaceAll("\\*", "").replaceAll("\\.", "");
        String res = pattern.matcher(firstString).replaceAll("");
        return StringUtils.normalizeSpace(res);
    } else {
        return StringUtils.EMPTY;
    }
}

Ответы [ 3 ]

1 голос
/ 08 марта 2019

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

  1. Поместите System.out.println(mhStr) в качестве первой строки метода.
  2. заменить return на System.out.println(....) в конце операторов if; не забудьте изменить сигнатуру метода, чтобы она возвращала ноль. Итак, private void testRegEx(String myStr) {
  3. Проверьте вывод консоли, чтобы увидеть две напечатанные строки и сравнить их. Вы сразу узнаете, что случилось.
  4. Отменить изменения, если вы хотите внести изменения в свой код.

EDIT:

  1. На втором шаге просто System.out.println (...) и оставьте свой код как есть. Спасибо кому-то, кто указал это ниже. Намного лучший способ сделать это.

Так, например, если вы хотите сравнить после StringUtils.normalizeSpace(res), то перед этой строкой сделайте System.out.println(StringUtils.normalizeSpace(res)); после пункта 1.

0 голосов
/ 12 марта 2019

Со всеми пробами и ошибками, как упомянул @SpinyBabbler, узнал некоторые символы, поэтому, чтобы избежать путаницы, мы пошли на замену только не-ascii символов по этой ссылке: Заменить не ASCII символ из строки

и, наконец, он работал с этим шаблоном: str1.replaceAll ("[^ \ x00- \ x7F] | [\ u0001]", "");

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

0 голосов
/ 08 марта 2019

Я предлагаю вам использовать debuggex , чтобы узнать, как работает ваше регулярное выражение. Вам нужно заменить двойное '\\' на '\', чтобы правильно использовать редактор регулярных выражений. Чем вы увидите путь к регулярному выражению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...