【问题标题】:RegExp getting link from String except multiple www正则表达式从字符串获取链接,除了多个 www
【发布时间】:2021-03-11 13:05:14
【问题描述】:

当我尝试从字符串中获取链接时,例如

"你好世界 https://www.sample.com/voices/2020/my-sound-www.sample.com"

我从这里获得了多个链接,因为我有多个 www,除此之外我还能如何?

输出:

  1. https://www.sample.com/voices/2020/my-sound-www.sample.com
  2. www.sample.com

这个输出不正确,应该是一个链接而不是两个链接

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()@:%_\+.~#?&\/=]*)?"

【问题讨论】:

  • 怎么样:https?://\S+
  • @anubhava 我又得到了多个链接,能否请您包括应该以.mp3 结尾的链接?
  • @Toto 没关系,我的问题是有多个www
  • @WiktorStribiżew 没有。这是另一个问题,仅此而已
  • 使用我的正则表达式,您只会从示例中获得一个链接。它有什么问题?

标签: regex preg-match regular-language


【解决方案1】:

你可以使用

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

regex demo

详情

  • (?:https?:(?:\\?\/\\?\/|www\.)|www\.) - http,后跟一个可选的s char,然后是:,然后是//,在每个/www. 之前都带有一个可选的\,只是或www.
  • [^\s&lt;&gt;"']* - 除空格以外的零个或多个字符,&lt;&gt;"'
  • \.mp3 - .mp3 字符串。

【讨论】:

    猜你喜欢
    • 2019-09-07
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2010-10-06
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多