Что нового

Поиск текста и копирование значений

Hellbender

Новичок
Сообщения
16
Репутация
0
Есть необходимость поиска по тексту (сам текст скопирован в буфер обмена и может быть занесен в переменную) с последующим копированием данных, которые находятся правее от найденного.

Пример:
№ обращения: 586879

Нужно найти "№ обращения:" и занести в переменную значение "586879".
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Hellbender [?]
Нужно найти "№ обращения:" и занести в переменную значение "586879".

Так :

Код:
$iFragment =StringRegExpReplace ($sBufText,"(?si).*№\D*(\d+).*","\1") ; Чуть подправил
 
Автор
Hellbender

Hellbender

Новичок
Сообщения
16
Репутация
0
gregaz сказал(а):
Так :

Код:
$iFragment =StringRegExpReplace ($sBufText,"(?si).*№\D*(\d+).*","\1") ; Чуть подправил

Помогло!))

А можно расшифровать это "(?si).*№\D*(\d+).*" и это "\1"?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Hellbender [?]
А можно расшифровать это "(?si).*№\D*(\d+).*" и это "\1"?

; (?s) - символ .(точка) соответствует всему, включая переход на новую строку. По умолчанию символ . не включает переход на новую строку.
; (?i) - независимая от регистра написания группа

Заменить текст, если он содержит в себе : текст любой(.*) до знака № , а затем следует Фрагмент из нецифр (\D+) ,затем Фрагмент из цифр (\d+) , затем люой текст (.*) ,
на текст \1
где \1 это текст ,заключенный в скобках выражения (т.е. (\d+) )
 
Автор
Hellbender

Hellbender

Новичок
Сообщения
16
Репутация
0
Еще есть такая строка, в которой нужно определить филиал:

Филиал: С ЛЬВОВ Городоцкая ул, 152/2

Как быть с ней?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Hellbender [?]

Код:
$sText='Филиал: С ЛЬВОВ Городоцкая ул, 152/2'
;$sFragm=StringRegExpReplace($sText,'(?i)^[^:]+?:(.*)$','\1');Рез-тат : ' С ЛЬВОВ Городоцкая ул, 152/2'
$sFragm=StringRegExpReplace($sText,'(?i)^[^:]+?:\s?(.*)$','\1'); освободимся от пробела перед именем филиала

MsgBox(0,'$sFragm',$sFragm)




Добавлено:
Сообщение автоматически объединено:

Или так:
Код:
$sFragm=StringRegExpReplace($sText,'(?i)^[^:]+?:\s?','')
 
Автор
Hellbender

Hellbender

Новичок
Сообщения
16
Репутация
0
Я в тупике(( Неподдается мне эта функция и все тут...
Прошу помощи!
В общем есть блок текста следующего содержания:

=======================[ Системная информация ]=========================
* № обращения: 648986 * Инициатор: [email protected]
>
>
> Филиал: С ЛЬВОВ Городоцкая ул, 152/2
> Тип документа: Приходная накладная от прямого поставщика
> Ситуация: не правильно указано кол-во
> Вн. номер документа в Рубиконе: 2665
> Номер САП: AS31450133
> Дата проведения документа: 11.08.2010
=======================[ Системная информация ]=========================


Мне нужно из этого блока информации записать в каждую переменную отдельно следующую инфу:

648986
С ЛЬВОВ Городоцкая ул, 152/2
2665
AS31450133

Помгите плз с кодом.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Hellbender
Попробуйте так:
Код:
$sFile = @ScriptDir & '\test.txt'

$hFile = FileOpen($sFile, 0)
$sText = FileRead($hFile)
FileClose($hFile)

$sVar_1 = StringRegExpReplace($sText, '(?s).*?\Q№ обращения: \E(\d+)\Q * Инициатор\E.*', '\1')
$sVar_2 = StringRegExpReplace($sText, '(?s).*?\QФилиал: \E(.*?)\r\n?.*', '\1')
$sVar_3 = StringRegExpReplace($sText, '(?s).*?\QРубиконе: \E(\d+)\r\n?.*', '\1')
$sVar_4 = StringRegExpReplace($sText, '(?s).*?\QСАП: \E(.*?)\r\n?.*', '\1')
MsgBox(0, '', $sVar_1 & @LF & $sVar_2 & @LF & $sVar_3 & @LF & $sVar_4)
 
Автор
Hellbender

Hellbender

Новичок
Сообщения
16
Репутация
0
Спасибо огромное!! :laugh:
Это именно то, что нужно!
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Вариант с получением массива переменных :
Код:
#include<Array.au3>
;.............
$aRezult=StringRegExp($sText,"(?:САП|Рубиконе|Филиал|\* № обращения):(.+?)[\r\n|*]",3)
_ArrayDisplay($aRezult)
 
Верх