Ошибка при использовании \n в RE



  • У меня есть файл с данными

    Prefix_Local:
    ----
    
    Prefix_Global:
    привет
    пока
    
    Prefix_Global_delimiter:
    ----
    

    Этот файл я читаю в переменную MESSAGES_PREFIX и мне нужно получить текст

    привет
    пока
    

    Получить я его должен используя

    Prefix_Global:\n([\S\s]+?)\n\s
    

    Т.к. каким-то чудом \n в BAS работает только, если прогнать текст через функцию "Шаблон", расположенную в "Инструменты" и уже после прогнать полученную переменную через "Первое вхождение", то я так и делаю
    alt text
    И по идее всё должно работать, но... В "Шаблон" я указал не цельный текст, а переменную [[MESSAGES_PREFIX]]...
    Если в "Шаблон" указать переменную, а не цельный текст, тогда "Первое вхождение" выдаст результат ""
    alt text
    И мне нужно понять, почему он получает в переменную A2 "", а не

    привет
    пока
    

    Как лично я понял, что если грузить в "Шаблон" переменную, то он получает такую-же переменную, как MESSAGES_PREFIX и \n также не работает в RE.



  • Для лучшего понимания проблемы и того, что мне нужно
    В "Шаблон" вписываю текст(Работает)
    True.xml
    В "Шаблон" вписываю переменную(получаю ""). Нужно указать путь к text.txt перед запуском!
    False.xml
    text.txt



  • Хоть кто-то знает в чём проблема или другой способ получить желаемый результат, но при этом без "порнухи"?



  • @ftyhp said in Ошибка при использовании \n в RE:

    Для лучшего понимания проблемы и того, что мне нужно
    В "Шаблон" вписываю текст(Работает)
    True.xml

    В вашем текстовом файле для переноса строки используется возврат каретки с переводом строки:

    \r = CR (возврат каретки) → используется в качестве символа новой строки в Mac OS перед X
    \n = LF (перевод строки) → используется в качестве нового символа строки в Unix/Mac OS X
    \r\n = CR + LF → используется в качестве символа новой строки в Windows

    cf581cf5-fd06-4fc8-bf2d-b58552359c72-изображение.png

    Вашу регулярку можно немного изменить, что бы она работала и с возвратом каретки:

    Prefix_Global:\r?\n([\S\s]+?)\r?\n\s
    

    55e6aaa8-f68e-4f5f-980a-601963a63f13-изображение.png

    Тестовый скрипт: 1489.xml

    В "Шаблон" вписываю переменную(получаю ""). Нужно указать путь к text.txt перед запуском!
    False.xml
    text.txt

    Вы не сохранили проект прежде чем отправить его на форум, в результате на форум вы выгрузили пустой скрипт:
    23ce21f8-7d2c-453c-9b53-9bb7a49f95d0-изображение.png



  • @Fox Благодарю. И использования шаблона не нужно с

    Prefix_Global:\r?\n([\S\s]+?)\r?\n\s
    


  • @ftyhp said in Ошибка при использовании \n в RE:

    @Fox Благодарю. И использования шаблона не нужно с

    Prefix_Global:\r?\n([\S\s]+?)\r?\n\s
    

    Если посмотрите код действия "шаблон", то увидите, что перенос строки он устанавливает без возврата каретки (только \n). По этому ваша регулярка с ним работала.

    Изменённая мною регулярка будет работать с текстом и с возвратом каретки и без неё (и с \r\n и с \n)


Log in to reply