LINUX.ORG.RU

OOCalc regexp


0

0

В 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 и ещё черт знает что...

Кто-нибудь сталкивался с такой задачей? Почему для очевидных вещей приходится склеивать костыли?


Ответ на: комментарий от abraziv_whiskey

Пайтон есть, но гуглимые случаи его использования — это единичные мучения энтузиастов в отсутствие документации.

Неужели нельзя смастерить что-либо подобное из OO Basic-а? В доках по нему лишь упоминание вызова глобального Find/Replace применительно ко всему документу.

mclaudt
() автор топика

Чтобы избежать подобных костылей в дальнейшем, призываю проголосовать тут за поддержку regexp в функции SUBSTITUTE.

mclaudt
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.