2012-04-02 2 views
3

Я хотел бы создать регулярное выражение для строки типа "S67-90". Я использовал синтаксис «String pattern =" \ w \ d \ d \ W \ d \ d "", но я хотел бы указать, что символ первого слова всегда должен начинаться с "S". Может ли кто-нибудь помочь мне в этом?java regex для строки

Мой пример кода:

     String pattern = "\\w\\d\\d\\W\\d\\d"; 
         Pattern p = Pattern.compile((pattern)); 
         Matcher m = p.matcher(result); 
         if (m.find()) { 
         System.out.println("Yes!It is!"); 
         } 
        else{ 
        System.out.println("No!Its not :("); 
         } 

ответ

3

Если вы хотите, чтобы ваш матч, чтобы начать с буквы S, вы можете сделать, как выше. Однако, если вы хотите указать, что строка должна начинаться с S, вы должны сделать это: ^S\\d\\d\\W\\d\\d. Это даст указание двигателю регулярного выражения начинать сопоставление с самого начала. Это регулярное выражение: S\\d\\d\\W\\d\\d будет соответствовать bla bla S67-90. Это регулярное выражение: ^S\\d\\d\\W\\d\\d будет соответствовать только строкам, начиная с S, поэтому оно будет соответствовать только S67-90.

+0

Superrr .. !! Это тоже работает. Я искал это точно! Благодаря! – dmurali

+0

@dmurali: Вы также можете реорганизовать свое регулярное выражение на что-то вроде этого: '^ S \\ d {2} \\ W \\ d {2}'. Это должно делать ту же работу, что и предложенная вами, всего лишь несколько слов. Если этот ответ ответил на ваш запрос, тогда просто отметьте его так :) – npinti

5

Просто замените первый \\w с S в шаблоне.

String pattern = "S\\d\\d\\W\\d\\d"; 
+1

Awww ..! Спасибо..! Я уже пробовал этот, но не был уверен, прав ли я. – dmurali

3

Easy, положить "S": String pattern = "[S]\\d\\d\\W\\d\\d";

+0

Thank you .. !! Оно работает..! – dmurali

+0

Всегда приветствуются! : D –

0

Просто изменить первых \ ш к S

S\d\d\W\d\d 
+0

Супер .. Спасибо! – dmurali

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