Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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
C# 正则表达式修改大字符串中的特定URL_C#_Regex - Fatal编程技术网

C# 正则表达式修改大字符串中的特定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" ... 与: 我想保持图像的名称,我不能有任何虚假的帖子,因为原始文本将包含其他网址我想离开。我只想修改图片,

我很难让我的正则表达式工作(大惊喜)

我正在尝试替换大量文本中的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" ...

与:


我想保持图像的名称,我不能有任何虚假的帖子,因为原始文本将包含其他网址我想离开。我只想修改图片,以便在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"