2013-12-15 2 views
0

У меня есть проблема, пытаясь проверить эту строку ...Validate строка, которая содержит шаблон в регулярных выражениях

Таким образом, пользователь выбирает шаблон: q( ). Затем пользователь заполняет содержимое внутри скобок, которые могут в конечном итоге, как это:

д (а, Ь, с)

Я пробовал разные способы, с помощью регулярных выражений для проверки этой строки, но он продолжает возвращать ответ «Нет». Я считаю, что проблема заключается в "q(" и ")" в моем регулярном выражении, так как я не уверен, как это должно выглядеть.

Вот фрагмент кода:

String data2 = "q(a,b,c)"; 
String regex2 = "q([a-zA-Z0-9,'])"; 

if(data2.matches(regex2)){ 
    System.out.println("yes"); 
} 
    else{ 
     System.out.println("No"); 
} 

У меня есть альтернативный путь, удаляя «д (» и «)» в data2 строке, но я предпочел бы его в регулярном выражении без необходимости удаления символов в строке.

Любые предложения?

+1

Скобки имеют особое значение в регулярных выражениях ... –

+0

Да, я понял, что когда я работал над regesx на другой строке. Просто не знаю, как я должен объявлять «q (« и »)» в regex – user11998

ответ

1

Вам нужно бежать круглые скобки (и избежать экранирующего символа таким образом, чтобы он компилирует) и добавить + в конце, чтобы указать один или несколько символов

String regex2 = "q\\([a-zA-Z0-9,']+\\)"; 

Вы можете прочитать значение каждого символа в регулярное выражение в Patternjavadoc.

+0

Я быстро нажал на курок и пропустил. Ты победил. – Floris

+1

@Floris В stackoverflow, каждый является победителем. –

+0

Ahh, так было «\\». Не понял, что можно было применить «\\» после писем. У меня было очень похожее решение для вас, но не думал о «q \\ (« part. – user11998

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