В Excel проблема выделения regexp-овой подстроки решалась написанием собственной функции:
Function ReFind(FindIn, FindWhat As String, Optional IgnoreCase As Boolean = False)
Dim i As Long
Dim matchCount As Integer
Dim RE As Object, allMatches As Object, aMatch As Object
Set RE = CreateObject("vbscript.regexp")
RE.Pattern = FindWhat
RE.IgnoreCase = IgnoreCase
RE.Global = True
Set allMatches = RE.Execute(FindIn)
matchCount = allMatches.Count
If matchCount >= 1 Then
ReDim rslt(0 To allMatches.Count - 1)
For i = 0 To allMatches.Count - 1
rslt(i) = allMatches(i).Value
Next i
ReFind = rslt
Else
ReFind = ""
End If
End Function
И в итоге в ячейке с функцией =ReFind(A1;«^\d\d») появлялось искомая подстрока.
Но в VBScript regexp-ы урезанные, нет lookbehind.
Хочу сделать то же самое в OOCalc. И хотя у него regexp-ы работают для кучи функций ('MATCH', 'SEARCH', 'LOOKUP'), из этой каши не склепать даже простейшей функции выделения подстроки! Гугление задания собственных функций выводит на вызов JavaScript и ещё черт знает что...
Кто-нибудь сталкивался с такой задачей? Почему для очевидных вещей приходится склеивать костыли?