мне нужно проверить строка "\++?"
, которая будет соответствовать что-то вроде +6014456
Java затмить регулярки косяка « +»
Но я получаю сообщение об ошибке invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\)
.... почему?
мне нужно проверить строка "\++?"
, которая будет соответствовать что-то вроде +6014456
Java затмить регулярки косяка « +»
Но я получаю сообщение об ошибке invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\)
.... почему?
Это дает вам ошибку, потому что "\++?"
не является допустимым Java буквальным - вам нужно, чтобы избежать обратной косой черты. Попробуйте это:
Pattern pattern = Pattern.compile("\\++?");
Однако, я не думаю, что это на самом деле регулярное выражение, которое вы хотите. Не вы на самом деле означает что-то вроде:
Pattern pattern = Pattern.compile("\\+\\d+");
Это соответствует регулярному выражению \+\d+
, то есть плюс с последующим, по меньшей мере, одну цифру.
спасибо! "+01445676" .matches ("\\ + \\ D +") – wizztjh
не должно быть больше похоже на «\\ +?» ?
Pattern pattern = Pattern.compile("\\++?");
System.out.println(pattern.matcher("+9970").find());
работает для меня
Я использую совпадения – wizztjh
, отправляю вызов '.matches()'. Не очевидно, каковы ваши фактические аргументы. –
InMessage.matches («\ ++?») – wizztjh