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

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Вот так оно работает в конструкторе РВ:
Код:
(?<=socialMetaCount\ repinCountSmall"><span\ aria-label=").*?(?=\ saves)
А в C# постоянно ругается. И кавычки и слэши и @ всё перепробовал.
Код:
var t = System.Text.RegularExpressions.Regex.Match(attribute, "@(?<=socialMetaCount\ repinCountSmall\"><span\ aria-label=\").*?(?=\ saves)").ToString();
Как победить?
А вообще хорошо бы добавить для кубика "Обработка текста" конвертер в C#.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Код:
@"(?<=socialMetaCount\ repinCountSmall""><span\ aria-label="").*?(?=\ saves)"
 
  • Спасибо
Реакции: Astraport

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Блин, как я мог забыть кавычки после @ поставить!
Спасибо, doc, выручил.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Не, я пробовал вариант с двумя кавычками и @, но почему-то собаку засунул внутрь, за первые кавычки.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Не, я пробовал вариант с двумя кавычками и @, но почему-то собаку засунул внутрь, за первые кавычки.
я об этой собаке и говорил)
Похоже, я не правильно понял то сообщение
 

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
Подскажите, пожалуйста, можно ли сделать сниппет, который будет экранировать необходимые символы в переменной?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

woober

Client
Регистрация
07.04.2015
Сообщения
211
Благодарностей
123
Баллы
43
Подскажите, пожалуйста, можно ли сделать сниппет, который будет экранировать необходимые символы в переменной?
да
Код:
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
 

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
woober, спасибо за сниппет.
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
будет экранировать все символы/слова, которые указаны в массиме symbols
Ну вот допустим нужно экранировать кавычки и как их добавить в ваш сниппет? Их же придется заэкранировать, а экранированные находить при реплейсе не будет.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Ну вот допустим нужно экранировать кавычки и как их добавить в ваш сниппет? Их же придется заэкранировать, а экранированные находить при реплейсе не будет.
будут
 

woober

Client
Регистрация
07.04.2015
Сообщения
211
Благодарностей
123
Баллы
43
Ну вот допустим нужно экранировать кавычки и как их добавить в ваш сниппет? Их же придется заэкранировать, а экранированные находить при реплейсе не будет.
Я не вижу причин почему это не будет работать - будет, хоть так указать "\"", хоть так @"""" в массиве. Вообще с этим экранированием столько на мой взгляд проблем появляется, проще @ впереди поставить и не мучаться.
 
  • Спасибо
Реакции: mihanat

mihanat

Client
Регистрация
26.02.2017
Сообщения
38
Благодарностей
18
Баллы
8
Я не вижу причин почему это не будет работать - будет, хоть так указать "\"", хоть так @"""" в массиве. Вообще с этим экранированием столько на мой взгляд проблем появляется, проще @ впереди поставить и не мучаться.
Regex C = (@"(?(?<=href="https://m\.vg\.ru/).*?(?=")"); Не подскажете . как такое впихать, или комментирует или матерится (?<=href="https://m\.vg\\.ru/).*?(?=")
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
  • Спасибо
Реакции: mihanat

mihanat

Client
Регистрация
26.02.2017
Сообщения
38
Благодарностей
18
Баллы
8

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Спасибо, а то пишешь чего то пишешь, а тут бац регулярка, и два часа тупишь
в C# просто кавычки экранируются двумя способами
без собаки впереди \
с собакой двойные ""
 
  • Спасибо
Реакции: Sergodjan и mihanat

SnowWind

Client
Регистрация
10.10.2012
Сообщения
246
Благодарностей
35
Баллы
28
вот это не экранирует
  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));
    }
 

Rimen

Client
Регистрация
28.10.2019
Сообщения
406
Благодарностей
253
Баллы
63
Сниппет для экранирования всех спецсимволов:
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

Wide

Client
Регистрация
04.02.2013
Сообщения
945
Благодарностей
257
Баллы
63
Сниппет для экранирования всех спецсимволов:
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

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
до чего докатились, уже сниппеты пишут)))
я теперь регулярки храню только в зенно-переменных, там не надо экранировать
 

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