让我们说我们有一些文本:
Lorem ipsum dolor,Lorem ipsum dolor,consectetur adipiscing elit.[医][医][[ ac ]][[ac]][[ac]]南汽在尼斯维尔,阿奎特,达尼辛,nec和马萨。库拉比图尔维尔·麦纳·埃罗斯,累加红宝石。Lorem ipsum dolor同坐,不分大小。这是一辆小车。[医]水母,产于极玻璃体中,产于羊草中。每一只夜蛾,每一只鸡,每只鸡。[医][医]黄曲霉( Cras molestie felis ) faucibus non,nunc.奎斯克,乌尔纳坐在同样的中音,在天鹅绒中的紫花苜蓿。
需要c#函数,该函数查找所有url并将域名替换为给定的域名,比如ex example.com to stackoverflow.com,但其他所有内容都保持不变(子域和url的其余部分)。
例如,在替换以下内容之后,文本应该如下所示:
Lorem ipsum dolor,Lorem ipsum dolor,consectetur adipiscing elit.[医][医][[ ac ]][[ac]][[ac]]南汽在尼斯维尔,阿奎特,达尼辛,nec和马萨。库拉比图尔维尔·麦纳·埃罗斯,累加红宝石。Lorem ipsum dolor同坐,不分大小。这是一辆小车。[医]水母,产于极玻璃体中,产于羊草中。每一只夜蛾,每一只鸡,每只鸡。[医][医]黄曲霉( Cras molestie felis ) faucibus non,nunc.Quisque suscipit,urna坐席,elit mi rhoncus lorem,ac luctus lectus nunc in velit.
发布于 2010-01-06 19:00:29
我认为这是可行的:
Regex r = new Regex("@(?<SCHEME>https?://)(?<SUBDOMAIN>([^.]+\.)*)example\.com(?<PATH>/.*)?");
string newText = r.Replace(text, "${SCHEME}${SUBDOMAIN}stackoverflow.com${PATH}");我使用命名组,因为它们更容易跟踪和阅读。第一个是方案,http://或https://,第二个是子域,最后一个是可选路径(可能有http://foo.example.com、http://foo.example.com/或http://foo.example.com/bar)。
发布于 2010-01-06 19:01:56
您使用的正则表达式应该如下所示:
s!(http[s]?://[\w\-]+)\.domain\.com([\w\d/]+)!$1.newdomain.org$2!gi注意:您必须用C#的表示法重写它。
https://stackoverflow.com/questions/2015394
复制相似问题