Что нового

[RegExp] замена регулярных выражений

MockeR

Знающий
Сообщения
101
Репутация
14
Добрый день) Есть код

Код:
#include <Array.au3>

$Test = 'text00,text01,text02,text03,text04,text05,;text10,text11,text12,text13,text14,text15,text16,text17,'
$Pattern = '([^;]+)'
$Pattern1 = '([^,]+)'

$res = StringRegExp($Test, $Pattern, 3)
$res0 = StringRegExp($res[0], $Pattern1, 3)
$res1 = StringRegExp($res[1], $Pattern1, 3)

_ArrayDisplay($res)
_ArrayDisplay($res0)
_ArrayDisplay($res1)


можно ли как-то все StringRegExp'ы заменить одним?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [RegExp] замена регулярных выражений

MockeR,
ИМХО, очень неудачное название темы и тех. задания нет.
Если я правильно понял, то нужно получить в массив то, что после ";" и через ",". Так?
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
Re: [RegExp] замена регулярных выражений

madmasles, не знаю как можно по-другому назвать :(

1) разделить строку на подстроки. Разделитель ";"
2) каждую подстроку по отделять от ","
 

Mur

Осваивающий
Сообщения
132
Репутация
32
Re: [RegExp] замена регулярных выражений

Может делить через
Код:
StringSplit()
?
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
Re: [RegExp] замена регулярных выражений

Mur, если не найдется решения, то буду через StringSplit() :scratch:

пробовал так, но почему-то вообще ничего не находит :'(

Код:
#include <Array.au3>

$Test = 'text00,text01,text02,text03,text04,text05,;text10,text11,text12,text13,text14,text15,text16,text17,'
$Pattern = '([^,]+);([^,]+)'

$res = StringRegExp($Test, $Pattern, 4)

For $i = 0 To UBound($res) - 1
    $match = $res[$i]
    For $j = 0 To UBound($match) - 1
        MsgBox(0, "", '$aArray=' & $i & @CRLF & 'Элемент=' & $j & @CRLF & 'Значение=' & $match[$j])
    Next
Next
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Если цель получить 2 массива, то:
Код:
#include <Array.au3>

$Test = 'text00,text01,text02,text03,text04,text05,;text10,text11,text12,text13,text14,text15,text16,text17,'

$res=StringSplit($Test,';')

For $i=1 to $res[0]
	$res[$i]=StringRegExp($res[$i], '([^,]+)', 3)
	_ArrayDisplay($res[$i],'Подстрока '&$i)
Next


з.ы. Не понимаю, почему Вам так не нравится StringSplit, что решили его отодвинуть в сторонку..
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
DarWiM, просто стало интересно возможно ли это 8)
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
MockeR
Думаю нет. Можно еще так:
Код:
#include <Array.au3>

$Test = 'text00,text01,text02,text03,text04,text05,;text10,text11,text12,text13,text14,text15,text16,text17,'

$res=StringRegExp($Test,'([^,|(?:,;)]+)',3)
_ArrayDisplay($res)

Но никакого разделения на подстроки тут нет..
 
Верх