Что нового

Данные, строки удалить все, кроме адреса

mepsy

Новичок
Сообщения
7
Репутация
0
Здравствуйте, подскажите регулярку или как реализовать такое:
имеется файл такого формата
Pattern: 1 Address: 184************************** Privkey: 5K****************************
из этого необходимо получить 2 файла 1 - только Address второй Address и Privkey в чистом виде, т.е примерно так
1_out.txt 184**************************
2_out.txt 184**************************;5K****************************
 

Norm

Продвинутый
Сообщения
278
Репутация
74
имеется файл такого формата
==========================================
Pattern: 1
Address: 184**************************
Privkey: 5K****************************
==========================================


Действительно ли содержимое исходгого файла так ▲▲▲▲ выглядит, или есть ещё и другие строки с данными
 
Последнее редактирование:

Norm

Продвинутый
Сообщения
278
Репутация
74
Для наглядности я добавил еще две строки
Код:
Local $sRegex = "(?m)^(Address:\h*\V+|Privkey:\h*\V+)"
Local $sString = "Pattern: 1" & @CRLF & _
                "Address: 184**************************" & @CRLF & _
                "Privkey: 5K****************************" & @CRLF & _
                "Address: 186**************************" & @CRLF & _
                "Privkey: 7K****************************"

Local $aArray = StringRegExp($sString, $sRegex, 3)
Local $sFile_1, $sFile_2
For $i = 0 To UBound($aArray) -1
   If StringInStr($aArray[$i], "Add") Then
       $sFile_1 &= $aArray[$i] & @CRLF
   EndIf
   $sFile_2 &= $aArray[$i] & @CRLF
Next

MsgBox(0,"Address", $sFile_1)
MsgBox(0,"Address // Privkey", $sFile_2)
 
Автор
M

mepsy

Новичок
Сообщения
7
Репутация
0
Для наглядности я добавил еще две строки
Код:
Local $sRegex = "(?m)^(Address:\h*\V+|Privkey:\h*\V+)"
Local $sString = "Pattern: 1" & @CRLF & _
                "Address: 184**************************" & @CRLF & _
                "Privkey: 5K****************************" & @CRLF & _
                "Address: 186**************************" & @CRLF & _
                "Privkey: 7K****************************"

Local $aArray = StringRegExp($sString, $sRegex, 3)
Local $sFile_1, $sFile_2
For $i = 0 To UBound($aArray) -1
   If StringInStr($aArray[$i], "Add") Then
       $sFile_1 &= $aArray[$i] & @CRLF
   EndIf
   $sFile_2 &= $aArray[$i] & @CRLF
Next

MsgBox(0,"Address", $sFile_1)
MsgBox(0,"Address // Privkey", $sFile_2)
верно, только данные берутся с файла.
видно я не совсем корректно понял Ваш вопрос про содержимое, там слишком много подобного, например во вложении содержимое txt файла
 

Вложения

  • 2022-06-07_194721.png
    2022-06-07_194721.png
    18.7 КБ · Просмотры: 2

Norm

Продвинутый
Сообщения
278
Репутация
74
Если в файле всегда пары строк стоят, то можно ещё проще сделать и быстрее обрабатывать.
Код:
;  Local $sString = FileRead("ПУТЬ К TXT-ФАЙЛУ")

;  После прописания пути  ^^^^^^^^^^^^^^^ удалить этот блок vvvvvvvvvvvvv
Local $sString = "Pattern: 1" & @CRLF & _
                "Address: 184**************************" & @CRLF & _
                "Privkey: 5K****************************" & @CRLF & _
                "Address: 186**************************" & @CRLF & _
                "Privkey: 7K****************************"
; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Local $sRegex = "(?m)^(?:Address|Privkey):\h*(\V+)"


Local $aArray = StringRegExp($sString, $sRegex, 3)
Local $sFile_1, $sFile_2
For $i = 0 To UBound($aArray)-1 Step 2
   $sFile_1 &= $aArray[$i] & @CRLF
   $sFile_2 &= $aArray[$i] &";"& $aArray[$i+1] & @CRLF
Next

Local $iFD = FileOpen(@ScriptDir &"\Address.txt", 2)
FileWrite($iFD, $sFile_1)
FileClose($iFD)
ShellExecute(@ScriptDir &"\Address.txt")

$iFD = FileOpen(@ScriptDir &"\Address_Privkey.txt", 2)
FileWrite($iFD, $sFile_2)
FileClose($iFD)
ShellExecute(@ScriptDir &"\Address_Privkey.txt")
 
Последнее редактирование:

Norm

Продвинутый
Сообщения
278
Репутация
74
Для трёх тоже можно.
Надеюсь с массивом разберётесь
Код:
Local $sString = FileRead("ПУТЬ К TXT-ФАЙЛУ")

Local $sRegex = "(?m)^(?:Address|Privkey):\h*(\V+)"
Local $aArray = StringRegExp($sString, $sRegex, 3)
Local $iFD, $sFile[3][2] = [["Address"],["Privkey"],["Address_Privkey"]]
For $i = 0 To UBound($aArray)-1 Step 2
   $sFile[0][1] &= $aArray[$i] & @CRLF
   $sFile[1][1] &= $aArray[$i+1] & @CRLF
   $sFile[2][1] &= $aArray[$i] &";"& $aArray[$i+1] & @CRLF
Next

For $nN = 0 To 2
    $iFD = FileOpen(@ScriptDir &"\"& $sFile[$nN][0] &".txt", 2)
    FileWrite($iFD, $sFile[$nN][1])
    FileClose($iFD)
    ShellExecute(@ScriptDir &"\"& $sFile[$nN][0] &".txt")
Next
 
Верх