i2i8 Posted April 11, 2021 Share Posted April 11, 2021 I have a file: PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] Exit C_GetAttributeValue(0x0000) PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] Enter C_GetAttributeValue hSession:0x19801d30, hObject:0x198010b0 PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] { PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] pTemplate[0].type:0x00000102, pTemplate[0].ulValueLen:0x00000014, pTemplate[0].pValue:[095012F0EC7DDFC6BF80B4736986FD1DEF81B1DD] PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] } PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] Exit C_GetAttributeValue(0x0000) PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] Enter C_FindObjects hSession:0x19801d30, ulMaxObjectCount:0x0001 PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] Exit C_FindObjects(0x0000) *pulObjectCount:0x00000000 PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] Enter C_FindObjectsFinal hSession:0x19801d30 PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] Exit C_FindObjectsFinal(0x0000) PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:258] Enter C_Login hSession:0x19801d30, userType:0x0001 PIN:11111111, ulPinLen=0x8 PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] Exit C_Login(0x0000) PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] Enter C_FindObjectsInit hSession:0x19801d30, ulCount:0x0001 PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] { PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] pTemplate[0].type:0x00000000, pTemplate[0].ulValueLen:0x00000004, pTemplate[0].pValue:[03000000] PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] } PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] Exit C_FindObjectsInit(0x0000) PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] Enter C_FindObjects hSession:0x19801d30, ulMaxObjectCount:0x0001 PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] Exit C_FindObjects(0x0000) *pulObjectCount:0x00000001 PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] Enter C_GetAttributeValue hSession:0x19801d30, hObject:0x197fa440 PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] { PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] pTemplate[0].type:0x00000100, pTemplate[0].ulValueLen:0x00000004, pTemplate[0].pValue:[00000000] PID=0x15ac, TID=0x070c[2021-04-11 17:54:53:274] } I want to get: userType:0x0001 PIN:11111111, in this line, PIN: after the content,PIN: The length of the right character is not determined, but ends with a comma Another way to describe it is this: userType:0x0001 PIN:Content, I want to get Content between PIN: and , I really hope you can help me, thank you very much Link to comment Share on other sites More sharing options...
Danp2 Posted April 11, 2021 Share Posted April 11, 2021 Do you know if the desired string can appear in the file more than once? I imagine you'll get a bunch of regex recommendations. In the mean time, take a look at _StringBetween in the help file. Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
i2i8 Posted April 11, 2021 Author Share Posted April 11, 2021 10 minutes ago, Danp2 said: Do you know if the desired string can appear in the file more than once? I imagine you'll get a bunch of regex recommendations. In the mean time, take a look at _StringBetween in the help file. Only once. Link to comment Share on other sites More sharing options...
Nine Posted April 11, 2021 Share Posted April 11, 2021 #include <Constants.au3> Opt( "MustDeclareVars", 1 ) Local $sContent = StringRegExp(FileRead("Test.txt"), "PIN:([^,]*)", 1)[0] MsgBox ($MB_SYSTEMMODAL, "", $sContent) try this. I do not know if userType... before is important or not. “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
i2i8 Posted April 11, 2021 Author Share Posted April 11, 2021 7 minutes ago, Nine said: #include <Constants.au3> Opt( "MustDeclareVars", 1 ) Local $sContent = StringRegExp(FileRead("Test.txt"), "PIN:([^,]*)", 1)[0] MsgBox ($MB_SYSTEMMODAL, "", $sContent) try this. I do not know if userType... before is important or not. It's amazing that you successfully solved my problem. Thank you again. Thank you. In addition, I also used my own way to solve, but it seems that the code is a little bit not concise, could you help me to perfect it? ; Open the file for reading and store the handle to a variable. Local $hFileOpen = FileOpen($CSP_Log, $FO_READ) Local $searchw = "userType" Local $iLine = 0, $sLine = '', $oMatchContentLine If $hFileOpen = -1 Then MsgBox(0,'ERROR','Unable to open file for reading.') Exit 1 EndIf ; find the line that has the search string While 1 $iLine += 1 $sLine = FileReadLine($hFileOpen) If @error = -1 Then ExitLoop If StringInStr($sLine, $searchw) Then For $i = $iLine To $iLine $oMatchContentLine = FileReadLine($hFileOpen, $i) local $test = _StringBetween ($oMatchContentLine, 'userType:0x0001 PIN:', ',') _ArrayDisplay($test, "Default Search") Next ExitLoop EndIf WEnd FileClose($hFileOpen) Link to comment Share on other sites More sharing options...
Nine Posted April 11, 2021 Share Posted April 11, 2021 You do not need to read each individual line. Just read the whole file at once like I did with my SRE... “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
i2i8 Posted April 11, 2021 Author Share Posted April 11, 2021 2 minutes ago, Nine said: You do not need to read each individual line. Just read the whole file at once like I did with my SRE... OK, learned new knowledge again, thank you. Link to comment Share on other sites More sharing options...
i2i8 Posted April 11, 2021 Author Share Posted April 11, 2021 56 minutes ago, Nine said: #include <Constants.au3> Opt( "MustDeclareVars", 1 ) Local $sContent = StringRegExp(FileRead("Test.txt"), "PIN:([^,]*)", 1)[0] MsgBox ($MB_SYSTEMMODAL, "", $sContent) try this. I do not know if userType... before is important or not. If the contents of the regex appear multiple times, and each time the contents are returned differently, how do I extract the contents and write them into Notepad separately? Link to comment Share on other sites More sharing options...
Nine Posted April 11, 2021 Share Posted April 11, 2021 29 minutes ago, i2i8 said: If the contents of the regex appear multiple times, and each time the contents are returned differently, how do I extract the contents and write them into Notepad separately? Do you mean the PIN:content appears multiple times in the same file ? (you said earlier only once) Or you have multiple files to read and each time, append the single content into a text file ? Please explain exactly what you want to achieve. “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
i2i8 Posted April 11, 2021 Author Share Posted April 11, 2021 1 hour ago, Nine said: Do you mean the PIN:content appears multiple times in the same file ? (you said earlier only once) Or you have multiple files to read and each time, append the single content into a text file ? Please explain exactly what you want to achieve. I have just observed the contents of the file, and both of the two situations you mentioned exist: The first one, PIN: the same content between and, but it appears multiple times, so I only need once; The second, PIN: the content between and is not the same, different content appears many times, then, I need to read out each different content, respectively write a backupinfo.txt. BackupInfo.txt rendering format, such as: PIN 1:11111111 PIN 2:22222222 PIN 3:33333333 Link to comment Share on other sites More sharing options...
i2i8 Posted April 11, 2021 Author Share Posted April 11, 2021 CSP_Log.log like this: expandcollapse popupPID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_Login hSession:0x19281d30, userType:0x0001 PIN:11111111, ulPinLen=0x8 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_Login(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_FindObjectsInit hSession:0x19281d30, ulCount:0x0001 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] { PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] pTemplate[0].type:0x00000000, pTemplate[0].ulValueLen:0x00000004, pTemplate[0].pValue:[03000000] PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] } PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_FindObjectsInit(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_Login hSession:0x19281d30, userType:0x0001 PIN:11111111, ulPinLen=0x8 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_Login(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_FindObjectsInit hSession:0x19281d30, ulCount:0x0001 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] { PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] pTemplate[0].type:0x00000000, pTemplate[0].ulValueLen:0x00000004, pTemplate[0].pValue:[03000000] PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] } PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_FindObjectsInit(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_Login hSession:0x19281d30, userType:0x0001 PIN:2222222, ulPinLen=0x8 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_Login(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_FindObjectsInit hSession:0x19281d30, ulCount:0x0001 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] { PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] pTemplate[0].type:0x00000000, pTemplate[0].ulValueLen:0x00000004, pTemplate[0].pValue:[03000000] PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] } PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_FindObjectsInit(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_Login hSession:0x19281d30, userType:0x0001 PIN:33333333, ulPinLen=0x8 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_Login(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_FindObjectsInit hSession:0x19281d30, ulCount:0x0001 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] { PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] pTemplate[0].type:0x00000000, pTemplate[0].ulValueLen:0x00000004, pTemplate[0].pValue:[03000000] PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] } PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_FindObjectsInit(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_Login hSession:0x19281d30, userType:0x0001 PIN:33333333, ulPinLen=0x8 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_Login(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_FindObjectsInit hSession:0x19281d30, ulCount:0x0001 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] { PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] pTemplate[0].type:0x00000000, pTemplate[0].ulValueLen:0x00000004, pTemplate[0].pValue:[03000000] PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] } PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_FindObjectsInit(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_Login hSession:0x19281d30, userType:0x0001 PIN:44444444, ulPinLen=0x8 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_Login(0x0000) PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Enter C_FindObjectsInit hSession:0x19281d30, ulCount:0x0001 PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] { PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] pTemplate[0].type:0x00000000, pTemplate[0].ulValueLen:0x00000004, pTemplate[0].pValue:[03000000] PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] } PID=0x170c, TID=0x1760[2021-04-11 21:31:15:782] Exit C_FindObjectsInit(0x0000) The result I want to achieve is: Backupinfo.txt PIN 1:11111111 PIN 2:22222222 PIN 3:33333333 PIN 4:44444444 Link to comment Share on other sites More sharing options...
i2i8 Posted April 11, 2021 Author Share Posted April 11, 2021 I'm very sorry. I didn't describe it accurately in the above reply. Please help me again. Thank you very much. Thank you very much Link to comment Share on other sites More sharing options...
Danp2 Posted April 11, 2021 Share Posted April 11, 2021 Give this a try -- #include <Array.au3> Opt( "MustDeclareVars", 1 ) Local $aPins = StringRegExp(FileRead("Test.txt"), "PIN:([^,]*)", $STR_REGEXPARRAYGLOBALMATCH) _ArrayDisplay($aPins) ; Duplicates present $aPins = _ArrayUnique($aPins, Default, Default, Default, $ARRAYUNIQUE_NOCOUNT) _ArrayDisplay($aPins) ; Duplicates removed Latest Webdriver UDF Release Webdriver Wiki FAQs Link to comment Share on other sites More sharing options...
Nine Posted April 11, 2021 Share Posted April 11, 2021 (edited) #include <File.au3> #include <Array.au3> Opt( "MustDeclareVars", 1 ) Local $aContent = StringRegExp(FileRead("Test.txt"), "(?s)PIN:(\w+\b)(?!.+PIN:\1\b)", 3) ;_ArrayDisplay($aContent) _FileWriteFromArray("Backupinfo.txt", $aContent, Default, Default, @CRLF) That will also write the contents into the text file... If PIN:content is only composed of digits, you can replace \w with \d (if needed). Edited April 11, 2021 by Nine “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Multi-Threading Made Easy Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now