Я пытаюсь извлечь первое пользовательское право из строки, разделенной точкой с запятой, которая соответствует шаблону.
Права пользователей хранятся в формате:
LAA;LA_1;LA_2;LE_3;
Строка пуста, если у пользователя нет прав.
Мое лучшее решение на данный момент - использовать следующее выражение в выражении regex.replace:
.*?;(LA_[^;]*)?.*
(Знак вопроса в конце группы предназначен для сопоставления всей строки в случае, если у пользователя нет прав, и замените его пустой строкой, чтобы указать, что у него его нет)
Однако, это не работает правильно, если искомое право находится на первой позиции:
LA_1;LA_2;LE_3;
Это легко исправить, просто добавив точку с запятой в начале строки перед заменой регулярного выражения, но мой вопрос: почему следующее регулярное выражение не соответствует этому?
.*?(?:(?:^|;)(LA_[^;]*))?.*
Я пробовал множество других регулярных выражений, чтобы найти решение, но пока безуспешно.