shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script-pt] Regex para casar links num documento markdown


From: Vinicius Costa Carvalho
Subject: Re: [shell-script-pt] Regex para casar links num documento markdown
Date: Mon, 13 Mar 2023 13:52:30 -0300

Cara... eu fiz assim:
https?:\/\/[a-z0-9.]+\/?([A-Za-z0-9._#?\/-]+)?

[]s,

On Mon, Mar 13, 2023 at 1:46 PM Arkanon <arkanon@lsd.org.br> wrote:

Experimente essa versão:


A ER ficou

\[[^]]+\]\(([^()]+|[^(]+\([^)]+\).*)\)

Não sei se você verá a formatação com fundo vermelho.
Minha sugestão é considerar 2 casos:

-----------------------------v  url's sem parênteses
\[[^]]+\]\(   (   [^()]+   |   [^(]+\([^)]+\).*   )   \)
------------------------------------------------------^ url's com parênteses

ISSO (não a sugestão anterior :-p) ajuda?

Ab,

(o_                          __o
//\   arkanon@lsd.org.br   _`\<,
V_/_                      (_)/(_)
---------------------------------


Em seg., 13 de mar. de 2023 às 11:58, Guilherme Gall <gmgall@gmail.com> escreveu:
Saudações, pessoal. Tudo bem?

Estou quebrando a cabeça com uma regex aqui e talvez alguém veja uma
solução que ainda não vi.

Estou tentando casar todos os links em um arquivo markdown. Listarei
um exemplo de arquivo de entrada e minha tentativa abaixo, mas caso
fique difícil de entender, está no regex101 também:
https://regex101.com/r/KMzhNZ/1

Exemplo de arquivo:

--- exemplo.md ---
# Blogs

Uma alternativa é usar um
[CMS](https://en.wikipedia.org/wiki/Content_management_system), como o
[Wordpress](https://wordpress.org/). Porém, verifique se você pode
instalar a pilha
[LAMP](https://en.wikipedia.org/wiki/LAMP_(software_bundle)) por aí.

[Geradores de sites
estáticos](https://en.wikipedia.org/wiki/Static_site_generator) (como
o [Jekyll](https://jekyllrb.com/) ou o [Hugo](https://gohugo.io/))
também são alternativas populares.

Se quiser trocar ideia comigo sobre isso, entre em [contato](/contact).
--- fim de exemplo.md ---

Minha tentativa de casamento foi:

--- shell ---
$ grep -n -E -o '\[[^]]+\]\([^)]+\)' exemplo.md
3:[CMS](https://en.wikipedia.org/wiki/Content_management_system)
3:[Wordpress](https://wordpress.org/)
3:[LAMP](https://en.wikipedia.org/wiki/LAMP_(software_bundle)
5:[Geradores de sites
estáticos](https://en.wikipedia.org/wiki/Static_site_generator)
5:[Jekyll](https://jekyllrb.com/)
5:[Hugo](https://gohugo.io/)
7:[contato](/contact)
--- fim da saída do shell ---

Um link no markdown tem o formato [texto do link](url), então minha
lógica foi casar:

- um "abre colchetes" literal seguido de
- ao menos um caractere que não seja um "fecha colchetes" seguido de
- um "fecha colchetes" literal seguido de
- um "abre parênteses" literal seguido de
- ao menos um caractere que não seja um "fecha parênteses" seguido de
- um "fecha parênteses"

Isso **quase** funciona. O link em que não funciona é o para a URL
https://en.wikipedia.org/wiki/LAMP_(software_bundle) que possui
parênteses.

Toda tentativa de fazer o link acima casar, só acabou com uma regex
mais difícil de entender e que casava errado o link para
https://gohugo.io/, pegando inadvertidamente o "fecha parênteses" do
texto (além do do link).

Virou uma situação em que quando eu acertava o casamento para o link
de texto "LAMP", eu quebrava o casamento para o link de texto "Hugo" e
vice-versa.

Alguma ideia?

Grato desde já,

Guilherme

_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.


--
Vinicius Costa Carvalho

"Se enxerguei mais longe, foi porque me apoiei sobre os ombros de gigantes."
Isaac Newton

reply via email to

[Prev in Thread] Current Thread [Next in Thread]