Почему Regex не возвращает все совпадения, которые соответствуют шаблону? - PullRequest
0 голосов
/ 08 февраля 2020

Мне нужно извлечь имя файла в таких форматах, как filename = FileName.Extension.
У меня есть шаблон Regex, но когда я проверяю его, он возвращает только 1 совпадение вместо 2.
Что не так с этим шаблоном?

шаблон:

(?<=filename=).+\..+

тестовая строка: :

idman636build5.exe?b=1&filename=idman636build5.exeidman636build5.exe?b=1&filename=idman636build5.exe

Ожидаемые совпадения:

  • filename=idman636build5.exeidman636build5.exe?b=1&filename=idman636build5.exe

  • filename=idman636build5.exe

Движок regex - это движок NET по умолчанию. Я не знаю его названия.

Смотрите результат в Regex101

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

Полагаю, вы хотите считать конец имени файла символом ? или &. Изменение выражения в соответствии с любым символом:

(?<=filename=)[^&?]+
0 голосов
/ 08 февраля 2020

Последний .+ будет соответствовать второму, так как он говорит, что соответствует чему угодно. (?<=filename=).+\..+\n так, например, сопоставляется только первое.

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