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: Alfredo Casanova
Subject: Re: [shell-script-pt] Regex para casar links num documento markdown
Date: Tue, 14 Mar 2023 00:14:40 -0300

$ cat text
A URL https://en.wikipedia.org/wiki/LAMP_(software_bundle) é a do
artigo sobre o LAMP na Wikipedia mesmo, não foi criação minha para o
exemplo.
3:[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))
5:[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/))
7:[contato](/contact)

$ grep -Eo "\[([^\[]+)\](\(.*\))" text
[CMS](https://en.wikipedia.org/wiki/Content_management_system)
[Wordpress](https://wordpress.org/)
[LAMP](https://en.wikipedia.org/wiki/LAMP_(software_bundle))
[Jekyll](https://jekyllrb.com/) ou o [Hugo](https://gohugo.io/))
[contato](/contact)



On Mon, Mar 13, 2023 at 10:53 PM Guilherme Gall <gmgall@gmail.com> wrote:
Salve Vinícius, tudo bem?

Então, pode parênteses em URL, sim.

A URL https://en.wikipedia.org/wiki/LAMP_(software_bundle) é a do
artigo sobre o LAMP na Wikipedia mesmo, não foi criação minha para o
exemplo.

A tua regex:

- não casa o link relativo "contato" na linha 5 do exemplo;
- não casa a URL https://en.wikipedia.org/wiki/LAMP_(software_bundle)
inteira, casa só até o 1º underline;
- casa as demais URLs corretamente, mas não captura o texto do link

Vou tentar adaptá-la por aqui também.

Obrigado pela sugestão.

Abraço,

Guilherme



Em seg., 13 de mar. de 2023 às 13:56, Vinicius Costa Carvalho
<vinicius@carvalho.inf.br> escreveu:
>
> Nunca vi parênteses em URLs, isso pode?
>
> On Mon, Mar 13, 2023 at 1:52 PM Vinicius Costa Carvalho <vinicius@carvalho.inf.br> wrote:
>>
>> 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:
>>>
>>> https://regex101.com/r/KMzhNZ/2
>>>
>>> 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
>
>
>
> --
> Vinicius Costa Carvalho
>
> "Se enxerguei mais longe, foi porque me apoiei sobre os ombros de gigantes."
> Isaac Newton
> _______________________________________________
> 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.


--
[]'s
Alfredo Tristão Casanova
Linux User #228230


reply via email to

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