Регулярные выражения вопросов - PullRequest
1 голос
/ 27 октября 2009

Я изучаю регулярные выражения и испытываю трудности. Может кто-нибудь сказать мне, если я на правильном пути с этими двумя проблемами?

-Списать слова на языке, заданном регулярным выражением (a | b) (c | elipson) - Я думаю, что ответ AC, BC, A, B. Я прав?

-Дайте регулярное выражение, распознающее все слова с нечетным числом а. - Я думаю (а) (аа) *. Если я не ошибаюсь, это всегда должно работать с исключением, когда слово просто «а». как я могу изменить это, чтобы оно работало, когда слово просто «а»?

Ответы [ 2 ]

4 голосов
/ 27 октября 2009
  • Если предположить, что "epsilon" означает пустую строку, то вы правы.

  • Вы также правы с (a) (aa) *. Посмотрите, что означает * в вашем синтаксисе регулярных выражений (и сравните его со значением +).

1 голос
/ 27 октября 2009

Ваш второй ответ дает только слова, которые имеют 1, 3, 5, ... a's в последовательности . Если вы хотите, чтобы все слова, содержащие - в любом месте - нечетное число букв «а», вам понадобится что-то вроде этого:

/a([^\s]*a[^\s]*a)*/

Если вы строгий и не хотите получать слова с помощью гипсов или других буквенных символов, это должно сделать:

/a([\w]*a[\w]*a)*/

(В зависимости от механизма RegEx вам необходимо заменить [\w] на [a-z]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...