Что нового

С помощью регулярки, выбрать строки, содержащие разделитель, но не имеющие скобку

Webarion

Осваивающий
Сообщения
143
Репутация
24
Привет ребят! Подсобите с регуляркой.
Есть следующая строковая переменная:
Код:
>Param1=1|Param2=2|Param3=3
>Str=s
>p1|p2|p3
>s1=1|s2|s3
>Combine1[a=1|b=2|c=3]
>Combine2[j=1|k=2|l=3]
>Combine3[d|f|g=5]
Нужно выбрать в массив все строки, которые содержат разделитель |, но не содержат скобки []
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
;
Код:
#include 'array.au3'
$file=''
$file&='>Param1=1|Param2=2|Param3=3'& @CRLF
$file&='>Str=s'& @CRLF
$file&='>p1|p2|p3'& @CRLF
$file&='>s1=1|s2|s3'& @CRLF
$file&='>Combine1[a=1|b=2|c=3]'& @CRLF
$file&='>Combine2[j=1|k=2|l=3]'& @CRLF
$file&='>Combine3[d|f|g=5]'& @CRLF
$str=StringRegExp($file,'(?m)^[^\[\r\n]*[\|]+[^\[\r\n]*[\r\n]+',3)
_ArrayDisplay($str)
;
 
Автор
W

Webarion

Осваивающий
Сообщения
143
Репутация
24
;
Код:
#include 'array.au3'
$file=''
$file&='>Param1=1|Param2=2|Param3=3'& @CRLF
$file&='>Str=s'& @CRLF
$file&='>p1|p2|p3'& @CRLF
$file&='>s1=1|s2|s3'& @CRLF
$file&='>Combine1[a=1|b=2|c=3]'& @CRLF
$file&='>Combine2[j=1|k=2|l=3]'& @CRLF
$file&='>Combine3[d|f|g=5]'& @CRLF
$str=StringRegExp($file,'(?m)^[^\[\r\n]*[\|]+[^\[\r\n]*[\r\n]+',3)
_ArrayDisplay($str)
;
Благодарю! Правда захватывает ненужный перенос строки.
Без последнего [\r\n]+, то, что надо: (?m)^([^\[\r\n]*[\|]+[^\[\r\n]*) <=:good:
 
Последнее редактирование:
Верх