Не работает регулярка в Басе
-
Регулярка в конструкторе работает а в Басе нет. Исходные данные вывожу в лог: переменная не пустая. Применяю "первое вхождение" с регуляркой из конструктора, построенной на том же самом тексте - итоговая переменная пустая. В чем может быть причина?
-
@wwwin Причина обычно в переносах строки. Скинь исходный текст (весь, к которому применяешь регулярку), и выдели что нужно в итоге. Можешь ещё твою регулярку скинуть, скажу в чём косяк.
-
D:/prodmix/Data Cable (USB кабеля)/qdatacabyrle.jpg - исходный текст
Регулярки: такая D:/prodmix/[\s\S]+([\s\S]{16,16})
или такая [\s\S]+([\s\S]{16,16})
Картинки все имеют одинаковое число символов в названии.
Может как-то другим образом можно получить имя картинки?
-
Регулярки: такая 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()
-
Экранирование слэшей не помогло.
Вы точно эту регулярку проверяли?
D:\/prodmix\/[\s\S]+([\s\S]{16,16})
по ссылке то пройдите, там же сразу видно что работает:
Хотя я бы регулярку совсем по другому бы сделал..
Возможно в переменной у вас не этот текст, выведите значение переменной в лог и откройте текстовый файл лога.
Подскажите пожалуйста, как и куда записывается split()
Действие выполнить код, в переменной [[STR]] вся строка, а в переменной [[TOSTER]] имя файла из последней папки.
-
@fox said in Не работает регулярка в Басе:
Хотя я бы регулярку совсем по другому бы сделал..
Ну так помоги девушке. Ты мастер этих самых дел ;-). Одну регулярку составил там где я три прикидывал) ну две если постараться)).
Это скорее всего продолжение темы работы со списком. Девушке надо отсортировать Как скопировать все строки, содержащие хотя бы одно слово из списка?
-
@allive said in Не работает регулярка в Басе:
Ну так помоги девушке
Я же выложил код, описал как его использовать :)
Тут пара нестыковок может быть, например в самой переменной путь может быть с обычным слешем
D:\prodmix\Data Cable (USB кабеля)\qdatacabyrle.jpg
Или сама переменная может оказаться списком..
-
@fox Я же говорил ты гений) Спасибо за подсказку как раз сидел логику продумывал и размышлял о .replace()
а про split() то я и забыл...
-
@fox Только не смейтесь, все проверяла - в конструкторе отлично, а в Басе не работало. Пробовала обрезать пробелы в исходной переменной и т.п.... Потом взяла исходную переменную, сохранила в файл, прочитала файл в новую переменную - и все заработало. Просто мне нужно было срочно, поэтому пробовала делать хоть что-нибудь. А почему та же регулярка не прокатывала с исходной переменной - так и не поняла.
-
@wwwin Либо она была expression так бывает когда регулярку в конструкторе подставляешь (не выражений, а конструктор в басе). Либо сама переменная понималась списком. Ну это имхи у меня так было со списком. два дня голову ломал потом плюнул и вместо списка все одной переменной засунул. Он ее понял.
P/S Кстати, аналогичная ситуация бывает (лично у мну было) он бас перестает понимать список совсем если запись в файл и ставишь галку символ окончания строки.
-
Практика - великая вещь) Спасибо вам большое за подсказки - пошла дальше учить мат.часть))
-
@allive это не девушка. Стиль написания, девушки так не думают и не ведут диалог.
опечатка по фрейду два раза ))
зачастую ушлые одевают на себя маску бабья так как - есть такой миф "мальчики должны помогать девочкам"
а вот мы страдаем ) создал тему, все проходят мимо ) что делать с этим долбаным бинарником (
кому бы дать что-бы помогли )) ахах
-
@кот ;-)
Дату смотрите.
И вот например
Да и в принципе не важно. Что уштурвалааккаута могут быть разные люди. Арти тоже многоликий. Кто раньше встал того и тапки