Это Regex ([a-zA-Z0-9]?(?:http[s]?://)?(?:(?:\w+)\.)(?:\S+)(?:\.(?:\w+))+?)
успешно находит любые из http://www.msn.com
мест где или www.msn.com
или msdn.microsoft.com
или http://msdn.microsoft.com
внутри строки. Однако есть два алгоритма замены, которые мне нужно использовать, это один <a href=\"$1\" target=\"_blank\" onclick=\"preventDualEditing(event)\">$1</a>
и этот <a href=\"http://$1\" target=\"_blank\" onclick=\"preventDualEditing(event)\">$1</a>
. Обратите внимание, что разница в том, что одна строка префикса содержит http://
, которая необходима для ссылок, таких как www.msn.com
.Условный Замена в Regex
Но то, что происходит это цикл, который я использую заявление заменяющего в Мессинг вещи, потому что, если он пытается заменить www.msn.com
первого вхождения найденного http://www.msn.com
и поэтому он заменяет его несколько раз - один раз, когда он находит ссылку с http://
уже и один раз, когда найдет www.msn.com
.
Есть ли способ для меня заменить один проход, который условно добавит http://
к строке, если необходимо?
что делает первый [A-Za-z0-9]? сделать для вас? когда вам нужно было что-то захватить перед «http: //»? Можете ли вы просто захватить все после «http: //», а затем заменить его на GetSet
То, что было в состоянии сделать, это убедиться, что я, например, не забираю скобки в этой строке '(www.msn.com)' - Я просто пишу ссылку. –