Порядок соответствия регулярному выражению - PullRequest
3 голосов
/ 20 мая 2011

Мой вопрос прост: предположим, я хотел бы сопоставить гласные в слове, но я бы хотел сопоставить их в определенном порядке, например, a, e, i, o, u.Как бы я поступил так?

Ответы [ 3 ]

8 голосов
/ 20 мая 2011

Итак, вы ищете a, за которым следуют некоторые символы, затем e, за которыми следуют некоторые символы и т. Д.

Другими словами, a, за которыми следуют вещи, которые не являютсяe, затем e.Тогда вещи, которые не i тогда i.Тогда вещи, которые не o тогда o.И, наконец, вещи, которые не u и, наконец, u.

В терминах регулярного выражения это a[^e]*e[^i]*i[^o]*o[^u]*u

(Вы могли бы обойтись с .*?, но почемучто, когда вы можете более точно определить, что вы имеете в виду.)

0 голосов
/ 20 мая 2011

Я бы пошел с:

a.*?e.*?i.*?o.*?u

Но это та же проблема, которая указана в комментарии Элвина к ответу Вотли. Это связано с тем, что вопрос недостаточно указан. Не указан приоритет.

0 голосов
/ 20 мая 2011

Вы имеете в виду в алфавитном порядке?

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

...