Я пытаюсь проанализировать командную строку, которая может содержать пароль, и, когда я регистрирую командную строку, я не хочу регистрировать пароль, поэтому мне нужно заменить его на ****.
Вот пример командной строки:
myprogram --first-option 10 --update-password mypassword --another-option
Вот регулярное выражение, которое «должно» работать (по крайней мере для меня), но не ...
.*?--update-password\s+(?<pwd>.*?)(\s+--\w+)?.*
Моя проблема в том, что именованная группа "pwd" ничего не соответствует из-за .*?
. Но если я попытаюсь удалить ? , то он будет соответствовать всей строке, включая следующую опцию.
Насколько я понимаю, ? должен сообщить движку, что он должен соответствовать, пока не найдет что-то еще после, то есть он должен совпадать, пока не найдет другую опцию (\s+--\w+)
или ничего. Но, видимо, так не получается ... Думаю, я делал это много раз в прошлом, и всегда получалось так, как я хотел. Не знаю, что мне здесь не хватает.
Спасибо за вашу помощь.