Função »regex« do LibreOffice Calc – qual formato regex é aplicável?

Função »regex« do LibreOffice Calc – qual formato regex é aplicável?

Quero encontrar uma string como DOI em uma frase e extrair o resultado em uma célula. Encontrei a função »regex« no LibreOffice Calc (versão atual 6.2.4.2) que me diz que faria exatamente o que eu quero.

Exemplo:

Foo bar doi: 10.1016/j.cmpb.2018.09.006 baar foooo

Meu regex em python é: \b(10[.][0-9]{4,}(?:[.][0-9]+)*\/(?:(?![\"&\'<>])\S)+)\b e combina bem com um script python (corresponde exatamente ao número doi sem a string »doi«, que é pretendida).

Mas a função »regex« recusa esta regex. A documentação menciona as expressões ICU Regex, onde não consigo encontrar nenhum problema em comparação com meu regex.

Estou sentindo falta de alguma coisa? Qual »dialeto regex« é aplicável ao LibreOffice?

Responder1

Na lista deexpressões regularessuportadas pelo LibreOffice, a maioria das expressões padrão são suportadas, mas faltam dois dos elementos que você usa:

  1. o uso de ?:para um grupo não capturador;
  2. o uso de ?!para uma visão negativa.

                      1              1  2
                      |              |  |
                      v              v  v
    \b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&'<>])\S)+)\b
    

Não sei que nível de RE isso representa (parece ser BRE com acréscimos), mas significa que seu RE não corresponderá à sua sequência de teste.

Não está claro quanto da sua string constitui o número que você está tentando isolar, então não posso sugerir como você pode evitar os elementos não suportados, mas estas são algumas possibilidades:-

  • Se você precisar da sequência numérica entre doi:e /, o mais simples \b10[.][0-9]{4,}(?:[.][0-9]+)*será suficiente.
  • Se você precisar de tudo entre doi:o próximo espaço, poderá usar \b10[.][0-9]{4,}(?:[.][0-9]+)*[^\s]*.

(Este segundo caso dá a mesma correspondência que o seu RE emRegExr.)

Sei que seus dados ativos podem ter mais exceções que devem ser capturadas, mas sem um conhecimento completo de seus dados e do número que você está tentando corresponder, não posso fazer mais.

informação relacionada