2013-12-01 2 views
1

Предположим, что у меня есть следующие слова, которые я хочу принять в регулярном выражении. iare, sare, are, snore , zere, tnoreСовет для простого простого регулярного выражения

Я мог бы использовать or выражение Идя этим путем: (iare|sare|are|snore|zere|tnore) но пытается оптимизировать его, я переписал его следующим образом: (s|t)?(t|n)?(i|s|a|z|t)?(a|o|e)re

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

Любая помощь будет оценена по достоинству. Благодаря

+0

Какой движок регулярных выражений вы используете? – psxls

+5

Против каких критериев вы пытаетесь его оптимизировать? Представление? Читаемость? Переносимость? –

+0

@hwnd один символ короче '([is]? A | [st] no | ze) re': P – HamZa

ответ

1

Вот два возможных оптимизаций, которые будут соответствовать таким же, как ваш выражение:

(?:ze|[is]?a|[st]no)re

и

(?:s(?:no|a)|i?a|tno|ze)re)

+0

Я уже получил свой ответ давно, но youre regex делает много чувств. Престижность к вам! ;-) – wmehanna

Смежные вопросы