Версия 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")
	
			
				Последнее редактирование: