No Excel e no Calc, a solução mais limpa é criar uma macro de expressão regular de propósito geral. Para fazer isso no Calc, acesse Tools -> Macros -> Organize Macros -> LibreOffice Basic
e adicione o seguinte código ao Módulo1:
Function ReFind(findIn, patt, Optional group_param As Integer, _
Optional ignoreCase_param As Boolean)
' findIn - string or cell to search in
' patt - regexp string or cell containing regexp string
' group - which group to grab - analogy to \n in regexp syntax
' ignoreCase - false for case sensitive matches
If IsMissing (group_param) Then
group = 0
Else
group = group_param
End If
If IsMissing (ignoreCase_param) Then
ignoreCase = False
Else
ignoreCase = ignoreCase_param
End If
oTextSearch = CreateUnoService("com.sun.star.util.TextSearch")
oOptions = CreateUnoStruct("com.sun.star.util.SearchOptions")
oOptions.algorithmType = com.sun.star.util.SearchAlgorithms.REGEXP
If ignoreCase Then
oOptions.transliterateFlags = _
com.sun.star.i18n.TransliterationModules.IGNORE_CASE
End If
oOptions.searchString = patt
oTextSearch.setOptions(oOptions)
oFound = oTextSearch.searchForward(findIn, 0, Len(findIn))
If oFound.subRegExpressions = 0 Then
ReFind = "No results"
MsgBox "No results"
Exit Function
ElseIf group >= oFound.subRegExpressions Then
ReFind = "No result for that group"
MsgBox "No result for that group"
Exit Function
Else
nStart = oFound.startOffset()
nEnd = oFound.endOffset()
ReFind = Mid(findIn, nStart(group) + 1, nEnd(group) - nStart(group))
End If
End Function
Agora você pode usar ReFind
para quaisquer expressões regulares necessárias na planilha. Por exemplo, na célula A1, insira 12345
. Na célula B1, insira a fórmula =REFIND($A$1,"(\d\d)(\d)",2)
. Isso recuperará o terceiro número, que é 3.
O código foi adaptado do link .
Observação: seria melhor criar a expressão regular em python ou java usando um suplemento. em . No entanto, isso requer arquivos de declaração XML em uma extensão, o que leva mais tempo para ser configurado.