如何从字符串中删除多个子字符串?

时间:2014-09-22 13:28:54

标签: c# regex string substring

我的string看起来像这样:

string body = "<p>Dear Usr\r<br /> \r<br />See the following-\r<br /> \r<br />JN: 19\r<br />Site:  \r<br />Description: \r<br />Work Order: \r<br /> \r<br />A listing of the works completed.\r<br />Thank you .\r<br />\r<br />\r<br />\r<br /> <https://running.fielders.com/OpenEmail/ChipCo042336/email@email.com/invs-693-285> <http://email.fielders.com/wf/open?upn=ADusIqwpYMLBRw2zAWXSKaHGA8vIY6xblvtU1D07Dfl99tcMOndfzsfNIZAug7FWHwvu6euZRgdGMOicT1XrX-2BWhviOs0Ze2NWM-2FHUPwrZ5HDwgQqeiA-2BiBSIR6BsFs4pFEbmpYxQgDSEaDAZDjUJG3pPNWBCOAMhMX-2BtJ-2Baza0d-2FeipGGk1nzAI2FMUHPpU69cAr1GbPxXed-2FuQxAHEGg-3D-3D></p>"

现在,我希望能够删除string和“&lt;&gt;”末尾的两个网址 网址周围的标签:

第一个:

<https://running.fielders.com/OpenEmail/ChipCo042336/email@email.com/invs-693-285>

第二个:

<http://email.fielders.com/wf/open?upn=ADusIqwpYMLBRw2zAWXSKaHGA8vIY6xblvtU1D07Dfl99tcMOndfzsfNIZAug7FWHwvu6euZRgdGMOicT1XrX-2BWhviOs0Ze2NWM-2FHUPwrZ5HDwgQqeiA-2BiBSIR6BsFs4pFEbmpYxQgDSEaDAZDjUJG3pPNWBCOAMhMX-2BtJ-2Baza0d-2FeipGGk1nzAI2FMUHPpU69cAr1GbPxXed-2FuQxAHEGg-3D-3D>

string的内容可能会发生变化,网址的内容也会发生变化,而基本网址除外http://email.fielders.com和{{} 1}}我知道我需要搜索这些基本网址,移除https://running.fielders.com然后删除,直到我点击下一个<但我无法理解它。

我已经尝试了几个小时玩这个:

>

但没有运气。

3 个答案:

答案 0 :(得分:3)

试试这个:

var newString = Regex.Replace(myString, @"(<http://email\.fielders\.com[^>]+>|<https://running\.fielders\.com[^>]+>)", "");

对于这两个网址,匹配基础和所有字符,直到找到>

<http://email\.fielders\.com[^>]+>

答案 1 :(得分:3)

您可以使用以下正则表达式。

Regex.Replace(body, @"<https?://(?:email|running)\.fielders\.com[^>]+>", "");

Ideone Demo

答案 2 :(得分:0)

<((?:http|https):\/\/(?:email\.fielders\.com|running\.fielders\.com)(?:(?![<>]).)*)>

试试这个。看看演示。

http://regex101.com/r/kM7rT8/7