Версия Autoit: 3.3.14.5
Есть простая строка с разделителем ; (*.csv) ,которую по этому разделителю нужно разделить.
Однако в строке имеется "экранированние" с помощью "". В такой группе, точнее в тексте между " и " , семиколон ; должен игнорироваться.
По этой причине пришлось отказаться от StringSplit() и попробовать раздробить строку с помощбю регулярки. Но и это оказалось не так просто.
Хотельсь бы за один проход выбрать всё, что стоит межну ; и " , даже если между ними пусто.
В указанном ниже примере, согласно Online тестеров, должно быть 10 групп на выходе.
Я проверял это ещй на других Online-Тестерах, и везде тот же результат (10 грапп), что я собственно и хочу поличить.
Однако Autoit выдает 11 групп.
Подозреваю, что это не проблема в патерне, но могу и ошибаться. Подскажите в чём я не прав.
Есть простая строка с разделителем ; (*.csv) ,которую по этому разделителю нужно разделить.
Однако в строке имеется "экранированние" с помощью "". В такой группе, точнее в тексте между " и " , семиколон ; должен игнорироваться.
По этой причине пришлось отказаться от StringSplit() и попробовать раздробить строку с помощбю регулярки. Но и это оказалось не так просто.
Хотельсь бы за один проход выбрать всё, что стоит межну ; и " , даже если между ними пусто.
В указанном ниже примере, согласно Online тестеров, должно быть 10 групп на выходе.
Я проверял это ещй на других Online-Тестерах, и везде тот же результат (10 грапп), что я собственно и хочу поличить.
Однако Autoit выдает 11 групп.
Подозреваю, что это не проблема в патерне, но могу и ошибаться. Подскажите в чём я не прав.
Код:
#include <Array.au3>
Local $sString = '15;"Слово; ещё несколько слов";;123;Feuer;;Standard;Analog/AM;4;UE 1 (direkt)'
Local $aArray = StringRegExp($sString, '(?:^|;)([^;"]*)(?!")|"([^"]+)"', 3)
_ArrayDisplay($aArray, "Result")
Последнее редактирование: