Regex: сопоставить пароль в строке подключения MSSQL, принимая во внимание заключение в кавычки - PullRequest
1 голос
/ 18 октября 2019

Я имею дело со строками подключения MSSQL в разных форматах, и мне нужно иметь возможность извлечь пароль, независимо от того, заключен он в (одинарные или двойные) кавычки. Я также должен убедиться, что, если пароль содержит кавычки или точки с запятой, я фиксирую весь пароль без кавычек. Если в начале пароля есть несколько кавычек, мне нужно захватить все, кроме первого.

До сих пор я построил следующее регулярное выражение:

/(?<=Password=["']?).+?(?=["'];|["';]?$)/gim

Это RegExловит развернутый пароль (...Password=foobar;... :: foobar), НО также ловит первую кавычку в свернутом пароле (...Password="foobar";... :: "foobar) или, если я удаляю ? в просмотре, как показано ниже, я правильно записываю свернутые пароли, но пропускаю распакованныепароли.

/(?<=Password=["']).+?(?=["'];|["';]?$)/gim

В идеале, я хотел бы сделать это без дополнительного Javascript. Вопрос помечен Javascript, потому что это движок, который я использую. Я знаю, что могу подстроку, если пароль начинается с кавычки, но цель состоит в том, чтобы найти решение RegEx.

Вот регулярное выражение с некоторыми примерами тестовых случаев: https://regexr.com/4n2lt

Заранее спасибо.

1 Ответ

1 голос
/ 19 октября 2019

Внешний вид бесконечной ширины на самом деле работает так и обычно используется так: чтобы убедиться, что есть какой-то определенный шаблон не сразу перед требуемым шаблоном.

Таким образом, * необязательный шаблон (ы) в конце обзора всегда появляется в использованном совпадении. **

Вместо этого следует использовать шаблон потребления:

/Password=["']?(.*?)(?:["'];|["';]?$)/gim

См. Демонстрационную версию regex , извлеките значение для группы 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...