複数のwwwを除いて文字列からリンクを取得する正規表現
Nov 29 2020
次のような文字列からリンクを取得しようとすると
"こんにちは世界 https://www.sample.com/voices/2020/my-sound-www.sample.com"
複数あるのでここから複数のリンクを取得しwww
ますが、それ以外はどうすればよいですか?
出力:
- https://www.sample.com/voices/2020/my-sound-www.sample.com
- www.sample.com
この出力は正しくなく、2つのリンクではなく1つのリンクである必要があります
https://www.sample.com/voices/2020/my-sound-www.sample.com
私の正規表現パターン:
r"((https?:www\.)|(https?:\/\/)|(www\.))[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9]{1,6}(\/[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)?"
回答
1 WiktorStribiżew Nov 30 2020 at 05:04
使用できます
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
ここで、パターンは
(?:https?:(?:\\?\/\\?\/|www\.)|www\.)[^\s<>"']*\.mp3
正規表現のデモを見る
詳細:
(?:https?:(?:\\?\/\\?\/|www\.)|www\.)
-http
、その後にオプションのs
文字が続き、その後:
、それぞれの前に//
オプションの\
、/
またはwww.
、ちょうどまたはwww.
[^\s<>"']*
-空白以外のゼロ以上の文字、<
、>
、"
及び'
\.mp3
-.mp3
文字列。