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

1

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

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

if (subtnString[cnt]=='X' && 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;
                }
            }

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

Теги:

2 ответа

6
Лучший ответ

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

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

В демо см. Строки, которые соответствуют.

объяснение

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

Справка

  • 0
    Учитывая эти объяснения, XLYZ не соответствует регулярному выражению.
  • 0
    Отличный ответ! Единственное, что я хотел бы добавить, - это проверить документацию по строкам в Java . Вы можете просмотреть все методы, которые он предоставляет для работы со строками.
Показать ещё 4 комментария
1

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

X[^LC]

см. Демо

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

X[LC]

см. Демо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню