Печально это(( что то совсем с регуляркой Autoit не дружуra4o сказал(а):Регуляркой
$pat = '(?)(?='tel=').*?'
$Text='04.08.2017 [врплывпар] лалалаал tel=13,лалала=14, rel=16'
$tel=StringRegExp($Text,'(?:tel=)(\d+)',1)
$lalala=StringRegExp($Text,'(?:лалала=)(\d+)',1)
$rel=StringRegExp($Text,'(?:rel=)(\d+)',1)
MsgBox(0,'','tel='&$tel[0]&@CR&'lalala='&$lalala[0]&@CR&'$rel='&$rel[0])
а как можно перебор организовать в одном выражении например в строкеra4o сказал(а):Я тоже не очень с регулярными выражениями дружу, но можно так :
Код:$Text='04.08.2017 [врплывпар] лалалаал tel=13,лалала=14, rel=16' $tel=StringRegExp($Text,'(?:tel=)(\d+)',1) $lalala=StringRegExp($Text,'(?:лалала=)(\d+)',1) $rel=StringRegExp($Text,'(?:rel=)(\d+)',1) MsgBox(0,'','tel='&$tel[0]&@CR&'lalala='&$lalala[0]&@CR&'$rel='&$rel[0])
$Text='04.08.2017 [врплывпар] лалалаал tel=13,лалала=14, rel=16'
$p = '(?s)\[(.+)\]'
$hes=StringRegExp($Text,$p,1)
MsgBox(0,'',$hes[0])
#include <array.au3>
$Text='04.08.2017 [врплывпар] лалалаал tel=13,лалала=14, rel=16'
$p = '(?:=)(\d+)'
$hes=StringRegExp($Text,$p,3)
_ArrayDisplay($hes)
да ответ удалилиra4o сказал(а):Не совсем пойму, что Вы хотите, но ведь здесь был ответ от кого-то из гуру с красивой регуляркой, удалили ?
Вот что у меня вышло :-[
Код:#include <array.au3> $Text='04.08.2017 [врплывпар] лалалаал tel=13,лалала=14, rel=16' $p = '(?:=)(\d+)' $hes=StringRegExp($Text,$p,3) _ArrayDisplay($hes)
$Arr1=StringRegExp($Text, "[^ .]+=[a-z]", 3)
$Arr = StringRegExp($Text, "[^ ,]+=\d+", 3)
Да, удалил. Потому что предложенная мной регулярка находила пары "параметр=цифры". Автор, насколько я понял, знает имена параметров. Поэтому проще сразу искать значение (как у вас), чем разбирать массив пар.удалили
Определитесь, что вам нужно. Искать значение конкретного параметра или найти все пары "параметр=значение" ?для текста и <...> для числа
$Text = "04.08.2017 [врплывпар] лалалаал tel=13,лалала=14, rel=лала . лалала=лалала"
$Arr = StringRegExp($Text, "[^ ,.]+=[^ ,.]+", 3)
#include <array.au3>
_ArrayDisplay($Arr)
InnI сказал(а):ra4o
Да, удалил. Потому что предложенная мной регулярка находила пары "параметр=цифры". Автор, насколько я понял, знает имена параметров. Поэтому проще сразу искать значение (как у вас), чем разбирать массив пар.удалили
Nbv_tim
Определитесь, что вам нужно. Искать значение конкретного параметра или найти все пары "параметр=значение" ?для текста и <...> для числа
Если нужны пары, в том числе для текста, да ещё и через точку, то можно такКод:$Text = "04.08.2017 [врплывпар] лалалаал tel=13,лалала=14, rel=лала . лалала=лалала" $Arr = StringRegExp($Text, "[^ ,.]+=[^ ,.]+", 3) #include <array.au3> _ArrayDisplay($Arr)
$Text=FileReadLine(@ScriptDir & "\" & "Parce" & "\" & "1.txt")
$p = '(?s)\ - (.+)\: '
$t='(.+?) '
$R='(?s)\->\((.+)\)'
$hes=StringRegExp($Text,$p,1)
$tes= StringRegExp($Text,$t,1)
$fes= StringRegExp($Text,$R,1)
MsgBox(0,'','Дата: '&$tes[0]&' Добавлено :' & $hes[0]& 'Номер : '&$fes[0])
StringInStr
да, так вторая строка читается.InnI сказал(а):Nbv_tim
Проблема-то в чём? В том, что вторая строка не читается? Так прочитайте еёКод:$Text = FileReadLine(@ScriptDir & "\Parce\1.txt", 2)
#include <File.au3>
$g=_FileCountLines(@ScriptDir & "\" & "Parce" & "\" & "1.txt")
MsgBox(0,'',$g)
Да, я осознаю что некорректно поставил вопрос.InnI сказал(а):Nbv_tim
Шаблон регулярного выражения - это алгоритм поиска. Естественно, он реализуется под конкретные данные: что и где искать. Если вы решили работать построчно, то нужно читать файл в массив (например, через FileReadToArray) и перебирать массив. Если читаете текстовый файл целиком, то и шаблон должен соответствовать. Но вы даже не объясняете, "что" нужно найти. Про "где" я уже молчу... одни сплошные "лалала".
##Global $tes,$hes,$fes,$p,$t,$R,$Text,
#include <File.au3>
$p = '(?s)\ - (.+)\: '
$t='(.+?) '
$R='(?s)\->\((.+)\)'
$g=_FileCountLines(@ScriptDir & "\" & "Parce" & "\" & "1.txt")
for $i=1 to $g
$Text=FileReadLine(@ScriptDir & "\" & "Parce" & "\" & "1.txt", $i)
$hes=StringRegExp($Text,$p, 1)
$tes= StringRegExp($Text,$t,1)
$fes= StringRegExp($Text,$R,1)
MsgBox(0,'','Дата: '&$tes[0]&' Добавлено:' & $hes[0]& 'Номер : '&$fes[0] )
Next