Перейти к основному содержимому

Преобразования регулярных выражений

Композиция квантификаторов:

(r)=r(r+)=r(r?)=r(r)+=r(r+)+=r+(r?)+=r(r)?=r(r+)?=r(r?)?=r?\begin{array}{ccc} (r^*)^*=r^* & (r^+)^*=r^* & (r^?)^*=r^* \\ (r^*)^+=r^* & (r^+)^+=r^+ & (r^?)^+=r^* \\ (r^*)^?=r^* & (r^+)^?=r^* & (r^?)^?=r^? \end{array}

Оптимизации с квантификатором *:

(rs)=(rs)(rs)=(rs)(rs)=(rs)\begin{align*} (r^*|s^*)^* = (r|s)^* \\ (r^*s^*)^* = (r|s)^* \\ (r^*|s)^* = (r|s)^* \end{align*}

Оптимизации с альтернативами:

rsrt=r(st)srtr=(st)r\begin{align*} rs|rt = r(s|t) \\ sr|tr = (s|t)r \end{align*}

Отрицание последовательности символов:

~(ab)=a ~b  ~a .\text{\textasciitilde} (ab) = a \space \text{\textasciitilde} b \space | \space \text{\textasciitilde} a \space .