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

Discussion in 'Вопросы и обсуждение' started by Astraport, Jul 31, 2017.

  1. Astraport

    Astraport Client

    Joined:
    May 1, 2015
    Messages:
    2,542
    Likes Received:
    1,660
    Вот так оно работает в конструкторе РВ:
    Code (text):
    1. (?<=socialMetaCount\ repinCountSmall"><span\ aria-label=").*?(?=\ saves)
    А в C# постоянно ругается. И кавычки и слэши и @ всё перепробовал.
    Code (text):
    1.  
    2. var t = System.Text.RegularExpressions.Regex.Match(attribute, "@(?<=socialMetaCount\ repinCountSmall\"><span\ aria-label=\").*?(?=\ saves)").ToString();
    3.  
    Как победить?
    А вообще хорошо бы добавить для кубика "Обработка текста" конвертер в C#.
     
  2. doc

    doc Client

    Joined:
    Mar 30, 2012
    Messages:
    6,475
    Likes Received:
    3,005
    Code (text):
    1. @"(?<=socialMetaCount\ repinCountSmall""><span\ aria-label="").*?(?=\ saves)"
     
    Astraport likes this.
  3. Astraport

    Astraport Client

    Joined:
    May 1, 2015
    Messages:
    2,542
    Likes Received:
    1,660
    Блин, как я мог забыть кавычки после @ поставить!
    Спасибо, doc, выручил.
     
  4. doc

    doc Client

    Joined:
    Mar 30, 2012
    Messages:
    6,475
    Likes Received:
    3,005
    даже если бы поставил, всё равно ошибку бы выбило)
     
  5. Astraport

    Astraport Client

    Joined:
    May 1, 2015
    Messages:
    2,542
    Likes Received:
    1,660
    Не, я пробовал вариант с двумя кавычками и @, но почему-то собаку засунул внутрь, за первые кавычки.
     
  6. doc

    doc Client

    Joined:
    Mar 30, 2012
    Messages:
    6,475
    Likes Received:
    3,005
    я об этой собаке и говорил)
    Похоже, я не правильно понял то сообщение
     
  7. molotok

    molotok Client

    Joined:
    Apr 17, 2015
    Messages:
    273
    Likes Received:
    80
    Подскажите, пожалуйста, можно ли сделать сниппет, который будет экранировать необходимые символы в переменной?
     
  8. doc

    doc Client

    Joined:
    Mar 30, 2012
    Messages:
    6,475
    Likes Received:
    3,005
    можно)
     
  9. woober

    woober Client

    Joined:
    Apr 7, 2015
    Messages:
    149
    Likes Received:
    73
    да
    Code (text):
    1.  
    2. string[] symbols = {"0","!","hello"};
    3. for (int i=0; i<symbols.Length; i++)
    4. {
    5.     project.Variables["test"].Value = project.Variables["test"].Value.Replace(symbols.ElementAt(i), @"\" + symbols.ElementAt(i));
    6. }
    7.  
    8.  
    будет экранировать все символы/слова, которые указаны в массиме symbols
     
    molotok likes this.
  10. molotok

    molotok Client

    Joined:
    Apr 17, 2015
    Messages:
    273
    Likes Received:
    80
  11. Astraport

    Astraport Client

    Joined:
    May 1, 2015
    Messages:
    2,542
    Likes Received:
    1,660
    Ну вот допустим нужно экранировать кавычки и как их добавить в ваш сниппет? Их же придется заэкранировать, а экранированные находить при реплейсе не будет.
     
  12. doc

    doc Client

    Joined:
    Mar 30, 2012
    Messages:
    6,475
    Likes Received:
    3,005
    будут
     
  13. woober

    woober Client

    Joined:
    Apr 7, 2015
    Messages:
    149
    Likes Received:
    73
    Я не вижу причин почему это не будет работать - будет, хоть так указать "\"", хоть так @"""" в массиве. Вообще с этим экранированием столько на мой взгляд проблем появляется, проще @ впереди поставить и не мучаться.
     
    mihanat likes this.
  14. mihanat

    mihanat Client

    Joined:
    Feb 26, 2017
    Messages:
    13
    Likes Received:
    2
    Regex C = (@"(?(?<=href="https://m\.vg\.ru/).*?(?=")"); Не подскажете . как такое впихать, или комментирует или матерится (?<=href="https://m\.vg\\.ru/).*?(?=")
     
  15. ssXXXss

    ssXXXss Client

    Joined:
    Dec 23, 2014
    Messages:
    6,285
    Likes Received:
    1,596
    mihanat likes this.
  16. mihanat

    mihanat Client

    Joined:
    Feb 26, 2017
    Messages:
    13
    Likes Received:
    2
    Спасибо, а то пишешь чего то пишешь, а тут бац регулярка, и два часа тупишь
     
  17. ssXXXss

    ssXXXss Client

    Joined:
    Dec 23, 2014
    Messages:
    6,285
    Likes Received:
    1,596
    в C# просто кавычки экранируются двумя способами
    без собаки впереди \
    с собакой двойные ""
     
    sergodjan66 and mihanat like this.

Пользователи просматривающие тему (Пользователей: 0, Гостей: 0)