2017-02-16 9 views
2

У меня есть входные строки, содержащие эти специальные символы в любом порядке: *. и \nJava регулярного выражения для соответствия конкретных специальных символов

Я хочу, чтобы убедиться, что нет никаких других символов в строке и \n всегда должно быть вместе, а не что-то вроде *.*..\..n, поэтому я хочу, чтобы строка соответствовала строке в Java, используя регулярное выражение.

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

String input = "*.*.*.\n.."; 
    System.out.println(input.matches("[\\\\.*\\n]")); 

Тем не менее, выходной сигнал является ложным.

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

+1

К сожалению, вы имеете в виду ваш вход должен содержать только символ '*' '. 'и * newline * символы? Или '*', '.',' '' '' и 'n'? Если у вас есть символы новой строки, вам нужно что-то вроде 'input.matches (" [. * \ N] * ")' или 'input.matches (" [. * \ N] + ")' (если не менее 1 символ требуется на входе). –

+0

@Wiktor Отлично, это сработало для меня, спасибо! Да, я имел в виду символы * newline *. 'Input.matches (" [. * \ N] * ")' - это то, что я хотел, поскольку мне не нужен символ atleast 1. Для полноты в Java это будет 'input.matches (" [. * \\ n] * ")'. – ccoder83

+1

В Java достаточно написать 'input.matches (" [. * \ N] * ")'. Во всяком случае, он уже опубликован –

ответ

1

Вам нужно просто добавить квантор * для соответствия более чем одному символу. Кроме того, нет никакой необходимости, чтобы избежать буквальной точки:

String input = "*.*.*.\n.."; 
System.out.println(input.matches("[.*\\n]*")); 

[.*\\n] соответствует ., или * или буквальному переводу строки символов \n.

+1

@KirillBulygin '\\ n' соответствует буквальному' \ n', что именно хочет OP. – manouti

+1

Я бы лучше описал это как * '" \\ n "' соответствует символу символа новой строки *. –

0

\ s мы должны использовать для символа пробела: [\ т \ п \ x0B \ е \ г]

String stringToSearch = "...\n..\n..\n.*.*.*.*...*.*"; 
System.out.println(stringToSearch.matches("[.*\\s]*")); 
Смежные вопросы