2016-12-07 4 views
0

Итак, у меня есть строка X1X2X3\\\\. Я хочу только захватить значения AlphaNumerics. Мое регулярное выражение - ([A-z0-9]*).*. Но он вернет X1X2X3\\. Мой код выглядит так:Несколько обратных косых черт в строке java regex

Pattern pattern = Pattern.compile("([A-z0-9]*).*"); 
Matcher matcher = pattern.matcher(str); 
matcher.matches(); 
return matcher.group(1); 

Хотелось бы найти регулярное выражение. Не String.replaceAll() или заменить() :)

+2

У вас есть * строка * '' x1x2x3 \\\\ '' или * строка символов * '" x1x2x3 \\\ \ "'? Кроме того, ваше регулярное выражение неверно, так как '[A-z]' может соответствовать не буквенно-цифровым символам. –

+0

Строка literal 'assertThat (trimSpecialCharacters (" X1X2X3 \\\\ "), is (" X1X2X3 "));' –

+0

ok '" ([A-Za-z0-9] *). * «Исправлено это спасибо! –

ответ

1

Проблема с A-z в [A-z0-9], которые могут соответствовать не-алфавитных символов, а также, а именно кодовые точки между Z и a.

Правильное выражение для использования - [A-Za-z0-9] для буквенно-цифровых символов или предопределенный класс символов \\w.

(заслуга всех тех, кто указал на ошибку в комментариях)

Смежные вопросы