Экранирование в регулярном выражении

  • Автор темы Автор темы Astraport
  • Дата начала Дата начала

Astraport

Client
Регистрация
01.05.2015
Сообщения
5 084
Реакции
4 633
Баллы
113
Вот так оно работает в конструкторе РВ:
Код:
Развернуть Свернуть Копировать
(?<=socialMetaCount\ repinCountSmall"><span\ aria-label=").*?(?=\ saves)
А в C# постоянно ругается. И кавычки и слэши и @ всё перепробовал.
Код:
Развернуть Свернуть Копировать
var t = System.Text.RegularExpressions.Regex.Match(attribute, "@(?<=socialMetaCount\ repinCountSmall\"><span\ aria-label=\").*?(?=\ saves)").ToString();
Как победить?
А вообще хорошо бы добавить для кубика "Обработка текста" конвертер в C#.
 
Не, я пробовал вариант с двумя кавычками и @, но почему-то собаку засунул внутрь, за первые кавычки.
я об этой собаке и говорил)
Похоже, я не правильно понял то сообщение
 
Подскажите, пожалуйста, можно ли сделать сниппет, который будет экранировать необходимые символы в переменной?
да
Код:
Развернуть Свернуть Копировать
string[] symbols = {"0","!","hello"};
for (int i=0; i<symbols.Length; i++)
{
    project.Variables["test"].Value = project.Variables["test"].Value.Replace(symbols.ElementAt(i), @"\" + symbols.ElementAt(i));
}
будет экранировать все символы/слова, которые указаны в массиме symbols
 
будет экранировать все символы/слова, которые указаны в массиме symbols
Ну вот допустим нужно экранировать кавычки и как их добавить в ваш сниппет? Их же придется заэкранировать, а экранированные находить при реплейсе не будет.
 
Ну вот допустим нужно экранировать кавычки и как их добавить в ваш сниппет? Их же придется заэкранировать, а экранированные находить при реплейсе не будет.
будут
 
Ну вот допустим нужно экранировать кавычки и как их добавить в ваш сниппет? Их же придется заэкранировать, а экранированные находить при реплейсе не будет.
Я не вижу причин почему это не будет работать - будет, хоть так указать "\"", хоть так @"""" в массиве. Вообще с этим экранированием столько на мой взгляд проблем появляется, проще @ впереди поставить и не мучаться.
 
  • Оценить
Реакции: mihanat
Я не вижу причин почему это не будет работать - будет, хоть так указать "\"", хоть так @"""" в массиве. Вообще с этим экранированием столько на мой взгляд проблем появляется, проще @ впереди поставить и не мучаться.
Regex C = (@"(?(?<=href="https://m\.vg\.ru/).*?(?=")"); Не подскажете . как такое впихать, или комментирует или матерится (?<=href="https://m\.vg\\.ru/).*?(?=")
 
Спасибо, а то пишешь чего то пишешь, а тут бац регулярка, и два часа тупишь
в C# просто кавычки экранируются двумя способами
без собаки впереди \
с собакой двойные ""
 
  • Оценить
Реакции: Sergodjan и mihanat
вот это не экранирует
  1. Код:
    Развернуть Свернуть Копировать
    string[] symbols = {"\"};
    for (int i=0; i<symbols.Length; i++)
    {
        project.Variables["test"].Value = project.Variables["test"].Value.Replace(symbols.ElementAt(i), @"\" + symbols.ElementAt(i));
    }
 
Сниппет для экранирования всех спецсимволов:
C#:
Развернуть Свернуть Копировать
string[] symbols = {@"[",@"]",@"\",@"^",@"$",@".",@"|",@"?",@"*",@"+",@"(",@")",@".",@""""};
for (int i=0; i<symbols.Length; i++)
{
    project.Variables["temp"].Value = project.Variables["temp"].Value.Replace(symbols.ElementAt(i), @"\" + symbols.ElementAt(i));
}
 
  • Оценить
Реакции: j2082192 и Wide
Сниппет для экранирования всех спецсимволов:
C#:
Развернуть Свернуть Копировать
string[] symbols = {@"[",@"]",@"\",@"^",@"$",@".",@"|",@"?",@"*",@"+",@"(",@")",@".",@""""};
for (int i=0; i<symbols.Length; i++)
{
    project.Variables["temp"].Value = project.Variables["temp"].Value.Replace(symbols.ElementAt(i), @"\" + symbols.ElementAt(i));
}
Буквально сегодня дёргал ребят в чате с экранированием. Спасибо друг огромное!
 
  • Оценить
Реакции: Rimen
до чего докатились, уже сниппеты пишут)))
я теперь регулярки храню только в зенно-переменных, там не надо экранировать
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)