Code: Select all
frame= 152 fps= 76 q=0.0 size= 766kB time=14.8 bitrate= 423.8kbits/s
Code: Select all
frame= 152 fps= 76 q=0.0 size= 766kB time=14.8 bitrate= 423.8kbits/s
frame= 152 fps= 76 q=0.0 size= 766kB time=14.8 bitrate= 423.8kbits/s
Code: Select all
time.s = StringField(StringField(data,6,"="),1," ")
Code: Select all
Structure tCHARACTER
StructureUnion
c.c
s.s {1}
EndStructureUnion
EndStructure
Define.s sText = "frame= 152 fps= 76 q=0.0 size= 766kB time=14.8 bitrate= 423.8kbits/s"
Define.tCHARACTER *Source = @sText
Define.l lLenSW = Len ("time=")
Define.s sTemp = ""
While *Source\c
If PeekS (*Source , lLenSW * SizeOf (tCHARACTER)) = "time="
*Source + (SizeOf (tCHARACTER) * lLenSW)
While *Source\c And *Source\c <> 32
sTemp + *Source\s
*Source + SizeOf (tCHARACTER)
Wend
Debug "My searched number: " + sTemp
Break
EndIf
*Source + SizeOf (tCHARACTER)
Wend
Code: Select all
TimeStr.s = Mid(Err,FindString(Err,"Duration: ",0)+Len("Duration: "),10)
Code: Select all
Dim Results.s(10)
Text.s = "frame= 152 fps= 76 q=0.0 size= 766kB time=14.8 bitrate= 423.8kbits/s"
CreateRegularExpression(1, "[0-9]*\.?[0-9*]")
Count.l = ExtractRegularExpression(1, Text, Results())
For x = 0 To Count - 1
Debug Results(x);
Next
Code: Select all
Dim Result.s(0)
Text.s = "frame= 152 fps= 76 q=0.0 size= 766kB time=14.8 bitrate= 423.8kbits/s"
;extract the time section
CreateRegularExpression(1, "time=\s*[0-9]*\.?[0-9*]")
Count.l = ExtractRegularExpression(1, Text, Result())
;extract the number from the time section
CreateRegularExpression(1, "[0-9]*\.?[0-9*]")
Count.l = ExtractRegularExpression(1, Result(0), Result())
Debug Result(0)
Code: Select all
Dim Results.s(0)
Dim Values.s(0)
Text.s = "frame=152fps=76q=0.0size=766kBtime=14.8bitrate=423.8kbits/s"
CreateRegularExpression(1, "time=[0-9]*\.?[0-9*]")
CreateRegularExpression(2, "[0-9]*\.?[0-9*]")
Count.l = ExtractRegularExpression(1, Text, Results())
For x = 0 To Count - 1
nb=ExtractRegularExpression(2, Results(x), Values())
For i=0 To nb-1
Debug Values(i)
Next i
Next
Code: Select all
sText.s = "frame=152fps=76q=0.0size=766kBtime=14.8bitrate=423.8kbits/s"
Debug StrF(ValF (Right (sText , Len (sText) - FindString (sText , "time=" , 1) - 4)) , 2)
I dont know, but with this one you keep decimalsuperadnim wrote:Question is... which ones faster?
Code: Select all
Dim Results.s(0)
Dim Values.s(0)
Text.s = "frame=152fps=76q=0.0size=766kBtime=14.87612345bitrate=423.8kbits/s"
CreateRegularExpression(1, "time=[0-9]*\.?[0-9*]++")
CreateRegularExpression(2, "[0-9]*\.?[0-9*]++")
Count.l = ExtractRegularExpression(1, Text, Results())
For x = 0 To Count - 1
nb=ExtractRegularExpression(2, Results(x), Values())
For i=0 To nb-1
Debug Values(i)
Next i
Next
Not realy. But you can try this :Bonne_den_kule wrote:Is grouping and backreferences supported by PB's regex library?
Code: Select all
ImportC ""
pcre_exec(regex,*extra,subject.s,len,offset,options,*ovector,ovecsize)
pcre_get_named_substring(regex,subject.s,*ovector,stringcount,stringname.s,*stringptr.string)
EndImport
Procedure.s ExtractSubName(id,subject.s,name.s)
Protected result.s
Protected Dim Ovec(100)
Protected String.l
Protected stringcount.l
Protected *regex.long = IsRegularExpression(id)
If *regex
stringcount = pcre_exec(*regex\l,0,subject,Len(subject),0,0,@ovec(),100)
If stringcount > 0
If pcre_get_named_substring(*regex\l,subject,@ovec(),stringcount,name,@string) > 0
result = PeekS(String)
EndIf
EndIf
EndIf
ProcedureReturn result
EndProcedure
Text.s = "frame=152fps=76q=0.0size=766kBtime=14.8bitrate=423.8kbits/s"
CreateRegularExpression(0, "time=(?P<TIME>[0-9]*\.?[0-9*])")
Debug ExtractSubName(0,Text,"TIME")
Code: Select all
ImportC ""
pcre_get_substring(subject.s,*ovector,stringcount,stringnumber,*stringptr)
pcre_exec(regex,*extra,subject.s,len,offset,options,*ovector,ovecsize)
EndImport
Procedure.s ExtractSubID(id,subject.s,subid)
Protected result.s
Protected Dim Ovec(100)
Protected String.l
Protected stringcount.l
Protected *regex.long = IsRegularExpression(id)
If *regex
stringcount = pcre_exec(*regex\l,0,subject,Len(subject),0,0,@ovec(),100)
If stringcount > 0
If pcre_get_substring(subject,@ovec(),stringcount,subid,@string) > 0
result = PeekS(String)
EndIf
EndIf
EndIf
ProcedureReturn result
EndProcedure
Text.s = "frame=152fps=76q=0.0size=766kBtime=14.8bitrate=423.8kbits/s"
CreateRegularExpression(0, "time=([0-9]*\.?[0-9*])")
Debug ExtractSubID(id,Text,1)