C# 正则表达式修改大字符串中的特定URL
我很难让我的正则表达式工作(大惊喜) 我正在尝试替换大量文本中的URL:C# 正则表达式修改大字符串中的特定URL,c#,regex,C#,Regex,我很难让我的正则表达式工作(大惊喜) 我正在尝试替换大量文本中的URL: <img src="http://www.example.com/any/number/of/directories/picture.jpg" ... <img src="http://www.example.com/any/number/of/directories/picture.gif" ... 与: 我想保持图像的名称,我不能有任何虚假的帖子,因为原始文本将包含其他网址我想离开。我只想修改图片,
<img src="http://www.example.com/any/number/of/directories/picture.jpg" ...
<img src="http://www.example.com/any/number/of/directories/picture.gif" ...
与:
我想保持图像的名称,我不能有任何虚假的帖子,因为原始文本将包含其他网址我想离开。我只想修改图片,以便在jpg | jpeg | gif | png等或
我在C#中这样做。URL与正则表达式匹配即使不是不可能,也是极其困难的。除非您对文档中的URL包含的内容有一些额外的限制,否则在这种情况下,您可以牺牲正则表达式的灵活性来换取实用性。URL与正则表达式匹配即使不是不可能,也是极其困难的。除非您对文档中的URL包含的内容有一些额外的限制,否则您可以牺牲正则表达式的灵活性来换取实用性。既然我已经准备好了这个,这就应该抓住URL本身:
(?<=src=")[^"]+(?=")
或者这是完整的C代码:
string stregex=“(?因为我已经准备好了这个,这应该抓住URL本身:
(?<=src=")[^"]+(?=")
或者这是完整的C代码:
string stregex=“(?)?
误读问题。这将替换jpg、png和gif路径的第一部分,并保留文件名。其他内容将被忽略
误读问题。这将替换jpg、png和gif路径的第一部分,并保留文件名。其他任何内容都将被忽略希望这对您有所帮助:
var replace = "/localserver/some/directory/";
var strs = new List<string>
{
"<img src=\"http://www.example.com/any/number/of/directories/picture.jpg\"",
"<img src=\"http://www.example.com/any/number/of/directories/picture.gif\""
};
Regex r = new Regex("[^<img src=\"].*/");
foreach (var s in strs)
{
Console.WriteLine("Replaced: {0}",r.Replace(s,replace));
}
var replace=“/localserver/some/directory/”;
var strs=新列表
{
"
产出:
Replaced: <img src="/localserver/some/directory/picture.jpg"
Replaced: <img src="/localserver/some/directory/picture.gif"
替换:希望这有助于:
var replace = "/localserver/some/directory/";
var strs = new List<string>
{
"<img src=\"http://www.example.com/any/number/of/directories/picture.jpg\"",
"<img src=\"http://www.example.com/any/number/of/directories/picture.gif\""
};
Regex r = new Regex("[^<img src=\"].*/");
foreach (var s in strs)
{
Console.WriteLine("Replaced: {0}",r.Replace(s,replace));
}
var replace=“/localserver/some/directory/”;
var strs=新列表
{
"
产出:
Replaced: <img src="/localserver/some/directory/picture.jpg"
Replaced: <img src="/localserver/some/directory/picture.gif"
替换:因为我只需要url的最后一位(即文件名)。文件名只能是jpg等,因此会有一个img src="http://在开头。如果URL包含在HTML文件的href中,则更容易一些。然后,您可以知道URL的开始和停止位置。然后,在URI上使用正则表达式之前,您应该使用一些HTML刮取库来获取图像标记的src属性。尽量避免使用正则表达式来解析HTML本身。因为我只需要最后一个url的位(即文件名)。文件名只能是jpg等,将有一个img src="http://在开头。如果URL包含在HTML文件的href中,则会更容易一些。这样,您就可以知道URL的开始和停止位置。然后,在URI上使用正则表达式之前,您应该使用一些HTML刮取库来获取图像标记的src属性。尽量避免使用正则表达式来解析HTML本身。不用担心。他的意思是:比Mine更简洁不用担心。他的看起来比mineNote更简洁。注意,在HTML4.01中“包装属性值(而不是”)是有效的,所以这不适用于所有页面。注意,在HTML4.01中“包装属性值(而不是”)是有效的,所以这不适用于所有页面。
var replace = "/localserver/some/directory/";
var strs = new List<string>
{
"<img src=\"http://www.example.com/any/number/of/directories/picture.jpg\"",
"<img src=\"http://www.example.com/any/number/of/directories/picture.gif\""
};
Regex r = new Regex("[^<img src=\"].*/");
foreach (var s in strs)
{
Console.WriteLine("Replaced: {0}",r.Replace(s,replace));
}
Replaced: <img src="/localserver/some/directory/picture.jpg"
Replaced: <img src="/localserver/some/directory/picture.gif"