Найти совпадение, но оно не должно входить в диапазон между знаками

Беда:(

Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Или так на С#

Код:
string s = "{Hello world} Hello Mark! {bred Hello Tod} Bred Bred {bred bred Hello Silvia}";
string pattern = @"\G(?i)(?:[^{H]+|\{.*?\}|(?!Hello).)*+\KHello";
string target = "XXX";
Regex regex = new Regex(pattern);
string result = regex.Replace(s, target);
return result;

Но блин ему не нравится вложенный квантификатор +
 
Последнее редактирование:
а зачем ты его вложил? тем более рядом с "*" . знак + это тоже самое что {1,} = один и более символов. пробуй вместо "+" {1,}
 
В C# нет поддержки сверх-жадных квантификаторов *+ и ++. Вместо них можно обойтись атомарной группировкой (?> ).
Код:
string s = "{Hello world} Hello Mark! {bred Hello Tod} Bred Bred {bred bred Hello Silvia}";
string pattern = @"\G(?i)((?>[^{H]+|\{.*?\}|(?!Hello).)*)(Hello)";
string target = "$1XXX";
Regex regex = new Regex(pattern);
string result = regex.Replace(s, target);
return result;
 
Назад
Сверху