Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Dart从URL字符串提取主机_Regex_Flutter_Dart_Url - Fatal编程技术网

Regex Dart从URL字符串提取主机

Regex Dart从URL字符串提取主机,regex,flutter,dart,url,Regex,Flutter,Dart,Url,假设我有以下URL作为字符串 String-urlSource='1〕https://www.wikipedia.org/'; 我想从这个url字符串中提取主页名;'wikipedia',从url中删除https://、www.com.org部分 提取这个的最佳方法是什么?如果是RegExp,我必须使用什么正则表达式?在这种情况下,您不需要使用 Dart有一个用于解析URL的预制类: 使用该API,您想要实现的目标非常简单: final urlSource='1〕https://www.wik

假设我有以下URL作为字符串

String-urlSource='1〕https://www.wikipedia.org/';
我想从这个url字符串中提取主页名;'wikipedia',从url中删除https://、www.com.org部分


提取这个的最佳方法是什么?如果是RegExp,我必须使用什么正则表达式?

在这种情况下,您不需要使用

Dart有一个用于解析URL的预制类:

使用该API,您想要实现的目标非常简单:

final urlSource='1〕https://www.wikipedia.org/';
最终uri=uri.parse(urlSource);
uri.host;//www.wikipedia.org
将为您提供
www.wikipedia.org
。从那里,您应该可以轻松地提取
wikipedia

Uri.host
还将删除整个路径,即主机后面的
/
后面的任何内容

提取二级域 如果您想从主机上获取wikipedia,即
wikipedia
,您可以执行
uri.host.split('.')[uri.host.split('.').length-2]


但是,请注意,这不是故障保护,因为您可能有或没有子域(例如
www
),顶级域也可能由多个部分组成。例如,
co.uk
使用
co
作为二级域。

“wikipedia”不是页面名称,而是二级域。无论如何,
[^\.]+(?=\.[^\.]+$)
都可以。如下所述,最好使用预先存在的代码来处理解析。这里有两个教训:1)并非所有涉及字符串的问题都需要正则表达式;2)如果问题是其他人可能遇到的问题,查找为您执行此操作的现有代码。OP没有询问提取主机的问题。@MonkeyZeus我添加了一个解释-在没有所有顶级域的映射的情况下,检索二级域实际上并不总是严格可行的。因此,我的简单示例应该可以。然而,从那以后,这真的很琐碎。除非OP处理的是定制的DNS或本地主机,否则我认为TLD对面向公众的网站是有保证的,所以你不需要关心它是什么,而是在按句点拆分时检索倒数第二个字符串。@MonkeyZeus我同意。它是如此的微不足道,如果保持更一般的话,答案可能会更有用。我不熟悉dart,但是一行可以是
uri.host.split('.')[uri.host.split('.').length-2]