Проверка строк на нестандартные символы - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь найти все нестандартные символы в файле json.Тем не менее, я не очень хорошо знаю синтаксис регулярных выражений для метода Pattern.compile (...) , чтобы указать, что я хочу.По сути, я хочу, чтобы он возвращал все, что не является буквой, числом, "[", "{", ":", "\" ",", "," _ "," ("," - ",".", "\", "/"

Я просто хочу напечатать строки со специальными символами.

Код выглядит следующим образом:

for (String line : lines) {

        Pattern regex = Pattern.compile("[^a-zA-Z_0-9 && [[]] && [{}]");
        Matcher m = regex.matcher(line);

        boolean check = m.find();

        if (check) {
            System.out.println(line);
        }
    }

1 Ответ

0 голосов
/ 10 мая 2018

Вот регулярное выражение, которое вы можете попробовать:

[^\p{L}\p{N}\[\]{}:",_().\\/-]

Некоторые примечания:

  • \p{L} соответствует всем буквам Юникода на всех языках.Замените на A-Za-z, если вас интересуют только английские буквы.
  • Аналогично, \p{N} соответствует всем числовым знакам Юникода.Замените на 0-9, если вас интересуют только цифры в латинском алфавите.
  • [, ] и \ необходимо экранировать предшествующим \, так как в противном случае ониимеют особое значение внутри самого регулярного выражения.
  • То же самое относится и к -, но, поместив его прямо в конец, его не нужно экранировать.

Тогдачтобы выразить это как строковую константу Java, вам нужно позаботиться о символах, которые имеют особое значение в синтаксисе строки Java: " и \.Таким образом, все вхождения " и \ в регулярном выражении должны быть экранированы в коде Java:

"[^\\p{L}\\p{N}\\[\\]{}:\",_().\\\\/-]"
...