Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Условные подмаски.
По-моему, этого достаточно: (?(condition)yes-pattern|no-pattern)
Пример: (?(?=\d)u|p). (?=\d) - это условие. Мы утверждаем, что после этого места идет цифра. Если оно истинно, то на данном месте должна стоять буква u. Иначе - p.
мы говорим, что смотрим с того места где мы ожидаем цифру, но при этом указываем, что сразу идет символ. а куда делась цифра? поэтому условие не срабатывает и мы получаем p.
во втором случае, у нас просто условие, что мы смотрим с того места где нет цифры и логично, что нам выпадает u.
Из предложенной автором регулярки (которая, как уже выяснили, НИКОГДА не совпадёт с "u") неясно, что ему надо ловить в "u1".
"u"? "u1"? Если отбросить заведомо нереальные конструкции, то, видимо, всё-таки "u".
Тогда либо "(u(?=\d)|p)" либо как-то близко к этому.
Начинайте построение регэкспа со словесного описания его поведения. Избежите глупых ошибок.