Вы можете попробовать это:
[^?]+(?:\?foo=([^&]+).*)?
Если есть параметры и первый параметр называется «foo», его значение будет зафиксировано в группе # 1. Если параметров нет, регулярное выражение все равно будет успешным, но я не могу предсказать, что произойдет, когда вы получите доступ к группе захвата. Некоторые возможности:
- будет содержать пустую строку
- будет содержать нулевую ссылку, которая будет автоматически преобразована в
- пустая строка
- слово "ноль"
- ваше приложение выдаст исключение, потому что группа № 1 не участвовала в матче.
Это регулярное выражение соответствует предоставленным вами образцам строк, но не будет работать, если есть список параметров, который не содержит «foo», или если «foo» не является первым параметром. Эти опции также могут быть адаптированы, при условии, что работает группа захвата.