;Тест разных вариантов решения задачи
$s = '<asdfasdf>123.456<asdf>123.456.789.012<asdf>' ;html
For $i = 0 To 16 Step +1
If $i > 20 Then ExitLoop ;!
$s &= $s
Next
Dim $OneTestResult[4], $EndResult[4] = [0,0,0,0] ;результат одного теста, среднний результат
$Tests = 10 ;колличество тестов
For $i = 1 To $Tests Step +1
ConsoleWrite('Test ' & $i & '/' & $Tests & @LF) ;тест
test($OneTestResult) ;ByRef
$EndResult[0] += $OneTestResult[0]
$EndResult[1] += $OneTestResult[1]
$EndResult[2] += $OneTestResult[2]
$EndResult[3] += $OneTestResult[3]
Next
$EndResult[0] /= $Tests ;Средний результат
$EndResult[1] /= $Tests
$EndResult[2] /= $Tests
$EndResult[3] /= $Tests
ConsoleWrite('---------------------------------------------' & @LF) ;Output
ConsoleWrite('1: ' & $EndResult[0] & @LF)
ConsoleWrite('2: ' & $EndResult[1] & @LF)
ConsoleWrite('3: ' & $EndResult[2] & @LF)
ConsoleWrite('4: ' & $EndResult[3] & @LF)
ConsoleWrite('---------------------------------------------' & @LF)
Func test(ByRef $OneTestResult)
$i1 = TimerInit()
$a1 = StringRegExp(StringReplace($s, '.', ''), '>(\d+)<', 3) ;Вариант 1
$OneTestResult[0] = TimerDiff($i1)
$i2 = TimerInit()
$a2 = StringSplit(StringRegExpReplace($s, '[^\d<]', ''), '<') ;Вариант 2
$OneTestResult[1] = TimerDiff($i2)
$i3 = TimerInit()
$a3 = StringRegExp(StringReplace(StringRegExpReplace($s, '(<.*?>)(?=\d|$)', '-'), '.', ''), '\d+', 3) ;Вариант 3
$OneTestResult[2] = TimerDiff($i3)
$i4 = TimerInit()
$a4 = StringRegExp(StringRegExpReplace(StringRegExpReplace($s, '(<.*?>)(?=\d|$)', '-'), '\.', ''), '\d+', 3) ;Вариант 4
$OneTestResult[3] = TimerDiff($i4)
EndFunc