RegExp obtendo link de String exceto vários www
Nov 29 2020
quando tento obter links de String como
"Olá Mundo https://www.sample.com/voices/2020/my-sound-www.sample.com"
recebo vários links a partir daqui porque tenho vários www
, como posso excluir isso?
resultado:
- https://www.sample.com/voices/2020/my-sound-www.sample.com
- www.sample.com
esta saída está incorreta e deve ser um link, não dois links
https://www.sample.com/voices/2020/my-sound-www.sample.com
Meu padrão regex:
r"((https?:www\.)|(https?:\/\/)|(www\.))[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9]{1,6}(\/[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)?"
Respostas
1 WiktorStribiżew Nov 30 2020 at 05:04
Você pode usar
final reg = RegExp(r'(?:https?:(?:\\?\/\\?\/|www\.)|www\.)[^\s<>"'']*\.mp3');
final m = reg.firstMatch(test);
print(m.group(0));
// => https://www.caferilik.com/wp-content/uploads/2020/11/Anne-Baba-Biz-Suçluyuz-Muhafazakar-Ailelerde-Kuşak-Çatışması-Sesli-Kitap-www.caferilik.com_.mp3
Aqui, o padrão é
(?:https?:(?:\\?\/\\?\/|www\.)|www\.)[^\s<>"']*\.mp3
Veja a demonstração de regex
Detalhes :
(?:https?:(?:\\?\/\\?\/|www\.)|www\.)
-http
, seguido por ums
caractere opcional:
e, em seguida,//
por um opcional\
antes de cada/
ouwww.
, apenas ouwww.
[^\s<>"']*
- zero ou mais que não sejam espaços em branco caracteres,<
,>
,"
e'
\.mp3
- uma.mp3
corda.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino