2014-06-19 4 views
1

Я хочу проверить, существует ли какой-либо специальный символ в заданной строке. Я пробовал следующий шаблон, но не работал. Так что это будет полезно, если любые действительные ответы.java (jdk 1.6) регулярное выражение

Pattern p = Pattern.compile("[\\*&]"); 
Matcher m = p.matcher("a*a&a"); 
boolean b = m.matches(); 

if (b) { 
    System.out.println("Found"); 
} else { 
    System.out.println("Not Found"); 
} 

Его работа в javascript. т.е. [\ * &].

ответ

2

Вместо:

boolean b = m.matches(); 

использование:

boolean b = m.find(); 

Как Matcher#matches возвращает истину только тогда, когда она соответствует полный ввод от начала до конца.

+1

+1 Это еще лучше, поскольку вы не пытаетесь сопоставить только проверку, если она содержит – gtgaxiola

+1

Спасибо за ответ. – user3427648

0

matches() авто-якоря регулярное выражение с ^ и $ (соответственно старт-оф-линии и истекшим-линии). Таким образом, вы regex преобразуется в ^[\\*&]$, который будет соответствовать только строкам "*" и "&".

Вы ищете: .*[\\*&].*

Side Примечание: вам не нужно, чтобы избежать * когда вложен в классе: [*&] ведет себя, как [\\*&].

0

Ваш не соответствует, так как он только ищет * и &

простой способ посмотреть, что contains является заключая, что регулярное выражение с .* в начале и в конце, например:

Pattern p = Pattern.compile(".*[\\*&].*"); 
Смежные вопросы