B4J Question Regex - Extract a complete line of text

rgarnett1955

Active Member
Licensed User
Longtime User
Hi

I have an ASCII data stream from a Spectrum analyser:

533000000 -1.091875e+02 0.000000000
533300000 -1.096875e+02 0.000000000
533600000 -1.091875e+02 0.000000000
533900000 -1.116874e+02 0.000000000
534200000 -1.106875e+02 0.000000000
534500000 -1.106875e+02 0.000000000
534800000 -1.091875e+02 0.000000000
535100000 -1.091875e+02 0.000000000
535400000 -1.101875e+02 0.000000000
535700000 -1.106875e+02 0.000000000
536000000 -1.091875e+02 0.000000000
536300000 -1.111875e+02 0.000000000
536600000 -1.101875e+02 0.000000000
536900000 -1.086875e+02 0.000000000
537200000 -1.086875e+02 0.000000000
537500000 -1.096875e+02 0.000000000
537800000 -1.091875e+02 0.000000000
538100000 -1.101875e+02 0.000000000
538400000 -1.106875e+02 0.000000000
538700000 -1.101562e+02 0.000000000
539000000 -1.096562e+02 0.000000000
ch>


Each line is terminated with chr(13) and chr(10) [<CR> <LF>]

I tried the following:

Regex Test:
Sub Process_Globals
    Private fx As JFX
    Private MainForm As Form
    Private xui As XUI

    Private outputStr As String
    Private inputStr As String
End Sub

Sub Button1_Click
    outputStr = Regex.Split("^.*$", inputStr)
    Log("Done")
End Sub

Private Sub TextInpt_Action
inputStr = _
  $"359000000 -1.20000e2 0.0000000
3593000000 -2.50000e2 0,000000
3594000000 -4.50000e2 0.000000
cr>
"$
End    Sub

When I run this I get:

RegexDebug.png


What I want of course is to end up with an array of four strings.

Can someone help me with this.

Regards
Rob
 

rgarnett1955

Active Member
Licensed User
Longtime User
Additional.

I also tried:

Regex - Tried to different methods:
Sub Button1_Click
'    Dim s As String = "s*"
'    Dim rx As RegexBuilder
'    rx.Initialize.AppendStartString.StartCapture.Append(rx.CharWord).AppendAtLeastOne.EndCapture 'key
'    Dim m As Matcher = Regex.Matcher2(rx.Pattern, Regex.MULTILINE, s) 'MULTILINE = StartString and EndString match the beginning and end of each line.
'
'    Do While m.Find
'        Log("Key: " & m.Group(1))
'    Loop
'
'    outputStr = Regex.Split2("^.*$", Regex.MULTILINE, inputStr)
'    Log("Done")
    
    
    
    outputStr = Regex.Split2("^.*$", Regex.MULTILINE, inputStr)
    Log("Done")
End Sub

I got empty lines viz:

Snag_1e93fa95.png


I tested my regex expression here : https://regex101.com/ and here https://regexr.com/

And it works. I get:

Snag_1e96023d.png



Regards
Rob
 
Upvote 0

rgarnett1955

Active Member
Licensed User
Longtime User
Hi Again,

I figured it out:

B4X:
Sub Button1_Click
    Dim rx As RegexBuilder
    rx.Initialize.AppendStartString.StartCapture.Append(rx.CharAny).AppendAtLeastOne.EndCapture
    Dim m As Matcher = Regex.Matcher2(rx.Pattern, Regex.MULTILINE, inputStr) 'MULTILINE = StartString and EndString match the beginning and end of each line.
    
    Do While m.Find
        Dim item As String
        item = m.Group(1)
        outList.Add(item)
        Log("Key: " & m.Group(1))
    Loop
    Log("Done")
End Sub
 
Upvote 0
Top