Использование регулярных выражений в Java

#java #regex

#java #регулярное выражение

Вопрос:

Я проверяю приоритет в строке в моей функции. Есть ли способ изменить мой код для включения регулярных выражений — я совершенно не знаком с регулярными выражениями, и хотя я прочитал несколько руководств в Интернете, все еще не слишком хорошо понимаю «это». Так что любое руководство было бы действительно оценено.

Например, в строке XLYZ, если символ после X не равен L или C, печатается оператор ‘нарушение’. Вот приведенный ниже код:

 if (subtnString[cnt]=='X' amp;amp; cnt 1<subtnString.length){
                if(subtnString[cnt 1]!= 'L' || subtnString[cnt 1]!= 'C'){
                    System.out.println("Violation: X can be subtracted from L and C only");
                    return  false;
                }
            }
 

Есть ли способ, которым я могу использовать регулярное выражение для замены этого кода?

Ответ №1:

Вы можете использовать что-то вроде этого:

 Pattern regex = Pattern.compile("^X[LC]");
Matcher regexMatcher = regex.matcher(subjectString);
if(regexMatcher.find() )  { // it matched!
}
else { // nasty message
     }
 

В демо-версии посмотрите, какие строки совпадают.

Объяснение

  • ^ Привязка утверждает, что мы находимся в начале строки
  • X соответствует литералу X
  • [LC] это символьный класс, который соответствует либо одному L , либо одному C

Ссылка

Комментарии:

1. Учитывая эти объяснения, XLYZ не соответствует регулярному выражению.

2. Отличный ответ! Единственное, что я хотел бы добавить, это то, что вам следует ознакомиться с документацией по строкам в Java . Вы можете просмотреть все методы, которые он предоставляет для работы со строками.

3. @zx81 да, мы сопоставляем всю строку целиком.

4. @JBNizet исправлено. Спасибо, что поняли это. 🙂

5. @DustinE. Спасибо за предложение! Добавлено. 🙂

Ответ №2:

для сопоставления текстов, нарушающих ваше правило, используйте это регулярное выражение:

 X[^LC]
 

смотрите демонстрацию

и для сопоставления регулярных выражений, которые не нарушают ваше правило, используйте это:

 X[LC]
 

смотрите демонстрацию