Не работает регулярка в Басе



  • Регулярка в конструкторе работает а в Басе нет. Исходные данные вывожу в лог: переменная не пустая. Применяю "первое вхождение" с регуляркой из конструктора, построенной на том же самом тексте - итоговая переменная пустая. В чем может быть причина?


  • administrators

    @wwwin Причина обычно в переносах строки. Скинь исходный текст (весь, к которому применяешь регулярку), и выдели что нужно в итоге. Можешь ещё твою регулярку скинуть, скажу в чём косяк.



  • D:/prodmix/Data Cable (USB кабеля)/qdatacabyrle.jpg - исходный текст
    Регулярки: такая D:/prodmix/[\s\S]+([\s\S]{16,16})
    или такая [\s\S]+([\s\S]{16,16})
    Картинки все имеют одинаковое число символов в названии.
    Может как-то другим образом можно получить имя картинки?


  • administrators

    @wwwin

    Регулярки: такая D:/prodmix/[\s\S]+([\s\S]{16,16})

    Слеши надо экранировать

    D:\/prodmix\/[\s\S]+([\s\S]{16,16})
    

    https://regex101.com/r/laj76b/1


    Но получить текст проще через split()

    [[STR]] = "D:/prodmix/Data Cable (USB кабеля)/qdatacabyrle.jpg"
    [[TOSTER]] = [[STR]].split("/")[ [[STR]].split("/").length-1 ]
    

    split() работает быстрее и менее затратен по ресурсам.



  • @fox said in Не работает регулярка в Басе:

    D:/prodmix/[\s\S]+([\s\S]{16,16

    Экранирование слэшей не помогло.

    Подскажите пожалуйста, как и куда записывается split()


  • administrators

    @wwwin

    Экранирование слэшей не помогло.

    Вы точно эту регулярку проверяли?

    D:\/prodmix\/[\s\S]+([\s\S]{16,16})
    

    по ссылке то пройдите, там же сразу видно что работает:
    0_1532973762489_на форум 66.png


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


    Подскажите пожалуйста, как и куда записывается split()

    Действие выполнить код, в переменной [[STR]] вся строка, а в переменной [[TOSTER]] имя файла из последней папки.



  • @fox said in Не работает регулярка в Басе:

    Хотя я бы регулярку совсем по другому бы сделал..

    Ну так помоги девушке. Ты мастер этих самых дел ;-). Одну регулярку составил там где я три прикидывал) ну две если постараться)).
    Это скорее всего продолжение темы работы со списком. Девушке надо отсортировать Как скопировать все строки, содержащие хотя бы одно слово из списка?


  • administrators

    @allive said in Не работает регулярка в Басе:

    Ну так помоги девушке

    Я же выложил код, описал как его использовать :)


    Тут пара нестыковок может быть, например в самой переменной путь может быть с обычным слешем

    D:\prodmix\Data Cable (USB кабеля)\qdatacabyrle.jpg
    

    Или сама переменная может оказаться списком..



  • @fox Я же говорил ты гений) Спасибо за подсказку как раз сидел логику продумывал и размышлял о .replace()
    а про split() то я и забыл...



  • @fox Только не смейтесь, все проверяла - в конструкторе отлично, а в Басе не работало. Пробовала обрезать пробелы в исходной переменной и т.п.... Потом взяла исходную переменную, сохранила в файл, прочитала файл в новую переменную - и все заработало. Просто мне нужно было срочно, поэтому пробовала делать хоть что-нибудь. А почему та же регулярка не прокатывала с исходной переменной - так и не поняла.



  • @wwwin Либо она была expression так бывает когда регулярку в конструкторе подставляешь (не выражений, а конструктор в басе). Либо сама переменная понималась списком. Ну это имхи у меня так было со списком. два дня голову ломал потом плюнул и вместо списка все одной переменной засунул. Он ее понял.
    P/S Кстати, аналогичная ситуация бывает (лично у мну было) он бас перестает понимать список совсем если запись в файл и ставишь галку символ окончания строки.



  • Практика - великая вещь) Спасибо вам большое за подсказки - пошла дальше учить мат.часть))



  • @allive это не девушка. Стиль написания, девушки так не думают и не ведут диалог.
    опечатка по фрейду два раза ))
    alt text

    зачастую ушлые одевают на себя маску бабья так как - есть такой миф "мальчики должны помогать девочкам"

    а вот мы страдаем ) создал тему, все проходят мимо ) что делать с этим долбаным бинарником (
    кому бы дать что-бы помогли )) ахах



  • @кот ;-)
    Дату смотрите.
    И вот например
    Да и в принципе не важно. Что у штурвала аккаута могут быть разные люди. Арти тоже многоликий. Кто раньше встал того и тапки