Регулярные выражения



  • Всем Привет!!!! Есть вот такая строка "csrfToken=96441d5de4cfd90a041988903a284ecb584ae86e2fc9bbb4f3f7bb19e5caa874314cc81cd5e2c25e28dd8bda713f6e8d2e9f53cc3b5da9817356cddd197a1c13" , Собственно вопрос, как получить значение токена куки, после знака = и до двойного апострофа??? в конце идут символы двойной апостроф, пробел и запятая.... Вот такая регулярка не работает "csrfToken=(.*?)"\ ,



  • @alex2 действие Извлечь все данные. Регулярное выражение -

    "csrfToken=(.*?)"
    


  • Спасибо Большое!!!!! Это то что нужно...)))


  • administrators

    @uraabk Действие "извлечь все данные" возвращает массив, если найдётся больше одного элемента, могут возникнуть ошибки. Если нужен один элемент, лучше использовать действие "первое вхождение".



  • @fox said in Регулярные выражения:

    @uraabk Действие "извлечь все данные" возвращает массив, если найдётся больше одного элемента, могут возникнуть ошибки. Если нужен один элемент, лучше использовать действие "первое вхождение".

    Все верно пишете, только вот это действие возвращает первый элемент. В этом случае, иногда будет необходимо предварительно обрабатывать входной текст, чтобы точно знать, что именно первый элемент будет нужным. В этом случае может быть проще выдернуть все значения, а уже потом в их массиве выискивать нужный.


  • administrators

    @xclsv Давненько вас на форуме не видно было :D С возвращением.
    Выдёргивать токены, да и вообще любые данные из html, лучше через xpath, а не через регулярки.

    Все верно пишете, только вот это действие возвращает первый элемент. В этом случае, иногда будет необходимо предварительно обрабатывать входной текст, чтобы точно знать, что именно первый элемент будет нужным. В этом случае может быть проще выдернуть все значения, а уже потом в их массиве выискивать нужный.

    Основной нюанс не в этом, важно понимать отличие между массивом и строкой, если BAS позволяет принимать массив с 1 элементом как строку и использовать его дальше, то это может войти в привычку у пользователя. В следующий раз такая логика может привести к синтаксической ошибке.



  • @fox said in Регулярные выражения:

    Выдёргивать токены, да и вообще любые данные из html, лучше через xpath, а не через регулярки.

    Иногда через xpath не получается. И быстрее/удобнее воспользоваться регуляркой.


  • administrators

    @uraabk

    Иногда через xpath не получается. И быстрее/удобнее воспользоваться регуляркой.

    Спорить тут бессмысленно, всё зависит от конкретного случая, я сам раньше везде и вся использовал регулярные выражения, мне они правда нравятся.
    Вот только они очень прожорливы к ресурсам.. В случае если, например, нужный токен или данные находятся в теге <script>, то достать их оттуда можно только регуляркой (другие костыли не рассматриваем). Но если применять регулярку ко всему html документу, то это займёт в разы больше времени и мощности ресурсов. Продуктивнее через xpath получить один код тега <script> и к нему уже применять регулярное выражение.



  • @fox said in Регулярные выражения:

    Давненько вас на форуме не видно было :D С возвращением

    Да вот появилось свободное время. Решил заглянуть, просвятиться, так сказать =) Взаимно рад видеть.

    @fox said in Регулярные выражения:

    Основной нюанс не в этом, важно понимать отличие между массивом и строкой, если BAS позволяет принимать массив с 1 элементом как строку и использовать его дальше, то это может войти в привычку у пользователя. В следующий раз такая логика может привести к синтаксической ошибке.

    Это, безусловно, очень важный ньюанс и его следует жирно выделять и заострять на нем внимание. Тут скорее важно понимание типов данных вообще.