Что вы можете сделать, это проверить, используя отрицательные lookaround утверждения, что то, что находится слева (?<!\S)
, а что справа (?!\S)
, не является символом без пробелов.
Немного обновленная версия вашего паттерна может быть:
(?<!\S)[a-zA-Z]*[:/]*[\w-]+\.+[\w:./%&=?-]+(?!\S)
Regex demo
Обратите внимание, что вам не нужно избегать косой черты, если выиспользуйте другой разделитель , чем /
, как ~
, дефис -
может быть перемещен в начало или конец класса символов, чтобы не экранировать его, и точка .
не должнабыть экранированным в классе персонажей.