@geomoney Потому что регулярное выражение это не строка! В вашем случае надо делать через конструктор https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp не забыв проэкранировать слэши иначе их съест js
Регулярные выражения
-
Всем Привет!!!! Есть вот такая строка "csrfToken=96441d5de4cfd90a041988903a284ecb584ae86e2fc9bbb4f3f7bb19e5caa874314cc81cd5e2c25e28dd8bda713f6e8d2e9f53cc3b5da9817356cddd197a1c13" , Собственно вопрос, как получить значение токена куки, после знака = и до двойного апострофа??? в конце идут символы двойной апостроф, пробел и запятая.... Вот такая регулярка не работает "csrfToken=(.*?)"\ ,
-
@fox said in Регулярные выражения:
@uraabk Действие "извлечь все данные" возвращает массив, если найдётся больше одного элемента, могут возникнуть ошибки. Если нужен один элемент, лучше использовать действие "первое вхождение".
Все верно пишете, только вот это действие возвращает первый элемент. В этом случае, иногда будет необходимо предварительно обрабатывать входной текст, чтобы точно знать, что именно первый элемент будет нужным. В этом случае может быть проще выдернуть все значения, а уже потом в их массиве выискивать нужный.
-
@xclsv Давненько вас на форуме не видно было
:DС возвращением.
Выдёргивать токены, да и вообще любые данные из html, лучше через xpath, а не через регулярки.Все верно пишете, только вот это действие возвращает первый элемент. В этом случае, иногда будет необходимо предварительно обрабатывать входной текст, чтобы точно знать, что именно первый элемент будет нужным. В этом случае может быть проще выдернуть все значения, а уже потом в их массиве выискивать нужный.
Основной нюанс не в этом, важно понимать отличие между массивом и строкой, если BAS позволяет принимать массив с 1 элементом как строку и использовать его дальше, то это может войти в привычку у пользователя. В следующий раз такая логика может привести к синтаксической ошибке.
-
Иногда через xpath не получается. И быстрее/удобнее воспользоваться регуляркой.
Спорить тут бессмысленно, всё зависит от конкретного случая, я сам раньше везде и вся использовал регулярные выражения, мне они правда нравятся.
Вот только они очень прожорливы к ресурсам.. В случае если, например, нужный токен или данные находятся в теге <script>, то достать их оттуда можно только регуляркой (другие костыли не рассматриваем). Но если применять регулярку ко всему html документу, то это займёт в разы больше времени и мощности ресурсов. Продуктивнее через xpath получить один код тега <script> и к нему уже применять регулярное выражение. -
@fox said in Регулярные выражения:
Давненько вас на форуме не видно было :D С возвращением
Да вот появилось свободное время. Решил заглянуть, просвятиться, так сказать =) Взаимно рад видеть.
@fox said in Регулярные выражения:
Основной нюанс не в этом, важно понимать отличие между массивом и строкой, если BAS позволяет принимать массив с 1 элементом как строку и использовать его дальше, то это может войти в привычку у пользователя. В следующий раз такая логика может привести к синтаксической ошибке.
Это, безусловно, очень важный ньюанс и его следует жирно выделять и заострять на нем внимание. Тут скорее важно понимание типов данных вообще.