Работая с регулярным выражением в java, чтобы найти слова, которые соответствуют приведенным ниже правилам
Правила регулярных выражений:
- Слово может начинаться с - ( необязательно Буквы префикса могут быть любыми из этих 'c' 'p''y''r''a''u'
- , за которыми следует заглавная T
- , за которой следует число от 0 до 9
- ( необязательно Суффикс). За ними следуют строчные буквы, которые не включают буквы p или y или r или u. Может быть одна или две буквы
Проблема: Если вышеупомянутый суффикс для слова является a или b или c и сопровождается заглавной буквой N, тогда регулярное выражение должно игнорировать эту букву и то, что следует за ней .Просмотрите тестовые случаи для уточнения.
Тестовые примеры
- pT1 c - должны возвращать все слово pT1 c (поскольку N не следует за c)
- cT4bcN2 - должен возвращать только cT4b (поскольку за c следует N, игнорировать эти две буквы, а остальные, следующие за ними)
- cT3cN2 - должны возвращать cT3 (поскольку за c следует N игнорировать эти 2 буквы и остальные, следующие за ними)
Пока у меня есть
[cpyrau] * [T] [0-9X?] [A- oqstv-z] {0,2} ([N])? (? (1) (? = [abc]))
, который работает для первого контрольного примера, но для всех остальных включает буква перед N, если это или c, поэтому я получаю cT4b c и cT3 c для второго и третьего тестовых случаев.
Любая помощь приветствуется.