假设我们有一些文字:
Lorem ipsum dolor坐下来,精神上的精神。 Vivamus cursus vestibulum quam,et tristique nisi tristique ac。 Nam ac risus vehicula tortor facilisis tincidunt。在nisi vel arcu aliquet dignissim nec et massa的Aliquam。 Curabitur vel magna eros,accumsan rutrum augue。 Lorem ipsum http://subdomain-1.example.com/dir1 dolor坐下来,精神上的adipistur elitis elit。 Nunc ut vehicula purus。 Phasellus nunc diam,hetrrerit in ultrices vine,adipiscing ut odio。类似于每个conubia nostra的taciti sociosqu ad litora torquent,per perosos himenaeos。 Cras molestie felis nec diam sollicitudin placerat pellentesque metus dapibus。 Aliquam ipsum ante,lacinia porta http://subdomain-2.example.com/dir2 faucibus non,porttitor at nunc。 Quisque suscipit,urna坐在amet rhoncus bibendum,elit mi rhoncus lorem,ac luctus lectus nunc in velit。
需要c#函数找到所有URL并用给定的一个替换域名,例如ex example.com到stackoverflow.com,但其他所有内容保持不变(子域名和其余的url)。
例如,替换后文本应如下所示:
Lorem ipsum dolor坐下来,精神上的精神。 Vivamus cursus vestibulum quam,et tristique nisi tristique ac。 Nam ac risus vehicula tortor facilisis tincidunt。在nisi vel arcu aliquet dignissim nec et massa的Aliquam。 Curabitur vel magna eros,accumsan rutrum augue。 Lorem ipsum http://subdomain-1.stackoverflow.com/dir1 dolor坐下来,精神上的adipistur elitis elit。 Nunc ut vehicula purus。 Phasellus nunc diam,hetrrerit in ultrices vine,adipiscing ut odio。类似于每个conubia nostra的taciti sociosqu ad litora torquent,per perosos himenaeos。 Cras molestie felis nec diam sollicitudin placerat pellentesque metus dapibus。 Aliquam ipsum ante,lacinia porta http://subdomain-2.stackoverflow.com/dir2 faucibus non,porttitor at nunc。 Quisque suscipit,urna坐在amet rhoncus bibendum,elit mi rhoncus lorem,ac luctus lectus nunc in velit。
答案 0 :(得分:1)
我认为这有效:
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/
或{ {1}})
答案 1 :(得分:0)
您使用的正则表达式应如下所示:
s!(http[s]?://[\w\-]+)\.domain\.com([\w\d/]+)!$1.newdomain.org$2!gi
注意:你必须用C#的表示法重写它。