正则表达式问题

chenjf2k chenjf2k 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
完整的程序如下:
============================================================
#region 远程文件上传.....

#region 替换URL地址
/// <summary>
/// 替换字符串中的远程文件为本地文件并保存远程文件
/// </summary>
/// <param name="sHTML">要上传的内容</param>
/// <param name="sPath">文件路径</param>
/// <returns>返回替换后的HTML内容</returns>
public string ReplaceRemoteUrl(string sHTML, string sPath)
{
//设置为在上传内容中搜索指定值的正则表达式
System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(sHTML, @"(http://(?!(" + Context.Request.ServerVariables["SERVER_NAME"] + @"/shineOA/resource/))(\S*\/)((\S)+[.]{1}(gif|jpg|png|bmp)))", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
string[] a_RemoteUrl = new string[mc.Count];
//转入无重复数据
for (int i = 0; i < mc.Count; i++)
{
a_RemoteUrl[i] = (mc[i].Groups[0].ToString());
}


//保存的上传后的文件名称
string SaveFileName;
//文件类型
string SaveFileType;


//如果不存在建立目录
DirectoryInfo uploadForlder = new DirectoryInfo(Context.Server.MapPath(sPath));
if (!uploadForlder.Exists) uploadForlder.Create();

//遍历上传内容中允许的文件
foreach (string str in a_RemoteUrl)
{
//获取上传文件的扩展名
SaveFileType = str.Substring(str.LastIndexOf(".") + 1).ToLower();
//获取上传后的随机文件名
SaveFileName = System.String.Concat(DateTime.Now.Hour.ToString("00"), DateTime.Now.Minute.ToString("00"), DateTime.Now.Second.ToString("00"), new Random().Next(1, 99).ToString(), ".", SaveFileType);
//保存远程的文件到本地
if (SaveRemoteFile(sPath, SaveFileName, str))
{
sHTML = sHTML.Replace(str, sPath + SaveFileName);
}
}
return sHTML;
}
#endregion

#region 保存远程文件.....
/// <summary>
/// 保存远程的文件到本地
/// </summary>
/// <param name="s_LocalFolder"></param>
/// <param name="s_LocalFileName">保存到本地文件名</param>
/// <param name="s_RemoteFileUrl">远程读取的文件URL</param>
/// <returns>如果保存成功则返回 true,否则返回 false</returns>
private bool SaveRemoteFile(string s_LocalFolder, string s_LocalFileName, string s_RemoteFileUrl)
{
WebClient wc = new WebClient();
//下载远程文件资源
byte[] buff = wc.DownloadData(s_RemoteFileUrl);
if (buff.Length == 0)
{
return false;
}

string relativelyFilePathName = string.Concat(s_LocalFolder, s_LocalFileName);
//把远程文件保存到本地
using (System.IO.FileStream fs = new System.IO.FileStream(Context.Server.MapPath(relativelyFilePathName), System.IO.FileMode.Create, System.IO.FileAccess.Write))
{

fs.Write(buff, 0, buff.Length);
fs.Close();
}

return true;
}

#endregion

#endregion

====================================================================

其中第13行
System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(sHTML, @"(http://(?!(" + Context.Request.ServerVariables["SERVER_NAME"] + @"/shineOA/resource/))(\S*\/)((\S)+[.]{1}(gif|jpg|png|bmp)))", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
意思是匹配html字串中的所有的图片地址,但这种写法本身不包括匹配本地的“file:///”文件,只匹配http://文件
如果要匹配file:///地址的图片文件应该怎么改进呢?

感谢高手!
...全文

相关推荐

Python 正则表达式(转义问题)

主要介绍了Python 正则表达式(转义问题),需要的朋友可以参考下

weixin_38693476

PHP 正则表达式验证中文的问题

$str = ‘中华人民共和国123456789abcdefg’; echo preg_match(“/^[\u4e00-\u9fa5_a-zA-Z0-9]{3,15}$”,$strName); 运行一下上面这段代码,看会有什么提示信息? Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 3 in F:\wwwroot\php\test.php on line 2 原来,PHP正则表达式中不支持下列 Perl 转义序列:\L,

weixin_38526650

关于Python正则表达式 findall函数问题详解

在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候。下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑。 代码如下: import re str="a b c d" regex0=re.compile("((\w+)\s+\w+)") print(regex0.findall(str)) regex1=re.compile("(\w+)\s+\w+") print(regex1.findall(str)) regex2=re.compile("\w+\s+\w+") print(regex2.findall(str)) 结果: [('

weixin_38599430

Java正则表达式的10大问题.pdf

Java正则表达式的10大问题.pdf

屈子1

一个关于正则表达式的问题

再补一个问题 (.+)、(.)+、.+不是一样的吗? [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]为什么上面代码运行结果都不一样 有的结果还用逗号分开  是怎么回事呢 代码如下:exec&#40;&#41;返回的是匹配到符合模式的内容的数组(由整体和按顺选排列的子片断组成),用alert显示时会显示数组toSting()的结果(就是用逗号隔开的字符串)。 在正则表达式中 . (点)表示除换行符以外的任意字符(在加上m参数打开多行匹配模式时表示任意字符),用转义符号\.表示点这个字符本体。 代码如下:var Pattern3=/&lt;(.)+>/i;  alert(Pattern3.exec(“

weixin_38565801
评论 4
收藏 已收藏
分享
返回顶部
chenjf2k
.NET社区 62,272 成员 668,968 内容