Jump to content

How do I get the output of the matching pattern?


Recommended Posts

 Is there a way to output the regex matches into a file?

I have a script to compare two files and check for regex matches.

I want to output the matching regex of 'testexample.txt' to another file.

#include <MsgBoxConstants.au3>
#include <Array.au3>

$Read = FileReadToArray("C:\Users\admin\Documents\testexample.txt")
$Dictionary = FileReadToArray("C:\Users\admin\Documents\example.txt")

For $p = 0 To UBound($Dictionary) - 1 Step 1
    $pattern = $Dictionary[$p]
        For $i = 0 To UBound($Read) - 1 Step 1
        $regex = $Read[$i]

            If StringRegExp($regex, $pattern, 0) Then
                MsgBox(0, "ResultsPass", "The string is in the file, highlighted strings: " )
            Else
                MsgBox(0, "ResultsFail", "The string isn't in the file.")
            EndIf
        Next
Next

 

Link to comment
Share on other sites

It sounds like you're looking for just the matching section to be written to the file, if so, check out the help page for StringRegExp and read up on the flag parameter.

Edit: I would guess you're looking for Flag 3, but you can use this to check... I wrote this because I couldn't understand the what the flags did. Hope it helps :)

#include <Array.au3>

RegExpExample()

Func RegExpExample()

    Local $sTest = '<test>a</test> <test>b</test> <test>c</Test>'
    Local $sPattern = '(?i)<test>(.*?)</test>'
    Local $vResult

    For $iFlag = 0 To 4
        $vResult = StringRegExp($sTest, $sPattern, $iFlag)
        If @error Then
            ConsoleWrite("!    StringRegExp Error: " & @error & @CRLF & @TAB & "  Flag: " & $iFlag & @CRLF)
        ElseIf IsArray($vResult) Then
            If $iFlag = 4 Then
                For $i=0 To UBound($vResult) - 1
                    If IsArray($vResult[$i]) Then
                        _ArrayDisplay($vResult[$i], "Flag " & $iFlag & " Part " & $i & "- StringRegExp Result")
                    EndIf
                Next
            Else
                _ArrayDisplay($vResult, "Flag " & $iFlag & " - StringRegExp Result")
            EndIf
        Else
            MsgBox(0, "Flag " & $iFlag & " StringRegExp Result", $vResult)
        EndIf
    Next
EndFunc
Edited by seadoggie01

All my code provided is Public Domain... but it may not work. ;) Use it, change it, break it, whatever you want.

Spoiler

My Humble Contributions:
Personal Function Documentation - A personal HelpFile for your functions
Acro.au3 UDF - Automating Acrobat Pro
ToDo Finder - Find #ToDo: lines in your scripts
UI-SimpleWrappers UDF - Use UI Automation more Simply-er
KeePass UDF - Automate KeePass, a password manager
InputBoxes - Simple Input boxes for various variable types

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...