[Gambas-user] RegExp: How to find all matches of a pattern (global match)?

Gianluigi gradobag at gradobag.it
Mon Aug 21 09:03:52 CEST 2023


Il 21/08/23 05:10, T Lee Davidson ha scritto:
> On 8/20/23 18:42, Gianluigi wrote:
>> Something like that?
>>
>> Public Sub Main()
>>
>>    Dim sText As String = "abcdefty 192.15.122.38. dertgbjo 
>> 192.1.34.1. greantyop 189.1.76.238. zxcvbqerty 12.15.11.1. sawqrtui 
>> 255.7.6.138."
>>    Dim sExp As String = "(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"
>>    Dim sSplit As String[]
>>    Dim hRegExp As New RegExp
>>
>>    hRegExp.Compile(sExp)
>>    Try hRegExp.Exec(sText)
>>    If Error Then
>>       Print ("#ERROR")
>>       Return
>>    Endif
>>
>>    sSplit = Split(sText, " ", Null, True)
>>    Stop
>>    For i As Integer = 0 To sSplit.Max
>>      hRegExp.Exec(sSplit[i])
>>      Print hRegExp.Text;;
>>    Next
>>
>> End
>>
>> Regards
>>
>> Gianluigi
>
>
> Well, not exactly, but I thank you for trying.
>
> The text to parse actually looks more like this:
> A bunch of multi-line text to ignore.
> IP address: 192.15.122.38
> More multi-line text to ignore.
> IP address: 192.1.34.1
> More multi-line blah blah blah.
> IP address: 189.1.76.238
>
> There are other places in the text where an IP address pattern could 
> occur, but I need only the address on lines that start with "IP 
> address:". That's why I was using the pattern: "(?:IP address: 
> (\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}))"
>
> I have accomplished what I needed by parsing the text line by line and 
> testing if the line Begins with "IP address:". But, it just seems 
> there should be some way to tell Gambas to do a global match, as in 
> other languages, instead of simply returning the first match. Or, 
> perhaps I don't know regular expressions as well as I'd like, and I am 
> missing something in my pattern.
>
> I didn't mention it previously, but I did try with the 
> RegExp.MultiLine compile option which also seemed to make no difference.
>
>
Then you need to do this (I attach the example):

Public Sub Main()

   Dim sText As String = File.Load("./Text1")
   Dim sExp As String = "(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"
   Dim sSplit As String[]
   Dim sReturn As String
   Dim hRegExp As New RegExp

   hRegExp.Compile(sExp)
   Try hRegExp.Exec(sText)
   If Error Then
      Print "#ERROR"
      Return
   Endif

   sSplit = Split(sText, "\n", Null, True)
   For i As Integer = 0 To sSplit.Max
     hRegExp.Exec(sSplit[i])
     sReturn &= hRegExp.Text & " "
   Next

   sSplit = Split(sReturn, " ", Null, True, True)
   For i = 0 To sSplit.Max
     Print "IP address: " & sSplit[i]
   Next

End

Regards

Gianluigi
-------------- next part --------------
<salt FCKGM-0001-E778-DE3B-CF59>
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
CEc4whH+Xfgv2hN81QB4AAA=
</salt>


More information about the User mailing list