如何在存储过程或函数中实现正则表达式的功能

rainbow_57 2005-11-25 02:14:51
小弟有点问题想请教一下,看看各位大大有没有办法帮忙解决。
小弟想写一个存储过程或函数实现正则表达式的功能,在网上找了一下只有通过创建VBScript.RegExp来实现的,而且是只能知道有没有匹配的字符串(即能不能匹配成功)。小弟想更进一步,把匹配到的字符串插入一张临时表中,无奈VBScript根本没有学过,不知道有没有创建C#中的System.Text.RegularExpression的对象的?
...全文
250 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainbow_57 2005-11-25
  • 打赏
  • 举报
回复
唉,确实是啊,我查了一下资料,好像有个函数是通过创建VBScript对象来实现简单的查找功能的。但这种功能几乎没什么用,我想写能够匹配出子查询的。
我现在能写出的存储过程是匹配到整个符合的字符串的,但是,这个字符串里面的几组子字符串实在不知道怎么取出来了。好像VBScript没SubMatches之类的对象,或者我不会用吧。哪位老兄会的,来这里Show一下啊。
搬运工木木 2005-11-25
  • 打赏
  • 举报
回复
那等于是要写个正则表达式解释器了
来客心动 2005-11-25
  • 打赏
  • 举报
回复
存储过程的这些方面不强,根据自己的需要可以用 Sql 中的字符串函数,通配符,来实现一些简单的匹配,可以查看帮助文档来找到那些函数
rainbow_57 2005-11-25
  • 打赏
  • 举报
回复
不好意思啊,我想楼上的误会我的意思了。在C#里用正则表达式的功能写一些过程函数我也会。
我是想将这个功能搬到存储过程或者函数里面。
jxufewbt 2005-11-25
  • 打赏
  • 举报
回复
示例代码:

///提取HTML代码中文字的C#函数
/// <summary>
/// 去除HTML标记
/// </summary>
/// <param name="strHtml">包括HTML的源码 </param>
/// <returns>已经去除后的文字</returns>
using System;
using System.Text.RegularExpressions;
public class StripHTMLTest{
public static void Main(){
string s=StripHTML("<HTML><HEAD><TITLE>中国石龙信息平台</TITLE></HEAD><BODY>faddfs龙信息平台</BODY></HTML>");
Console.WriteLine(s);
}

public static string StripHTML(string strHtml){
string [] aryReg ={
@"<script[^>]*?>.*?</script>",

@"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>",
@"([\r\n])[\s]+",
@"&(quot|#34);",
@"&(amp|#38);",
@"&(lt|#60);",
@"&(gt|#62);",
@"&(nbsp|#160);",
@"&(iexcl|#161);",
@"&(cent|#162);",
@"&(pound|#163);",
@"&(copy|#169);",
@"&#(\d+);",
@"-->",
@"<!--.*\n"
};

string [] aryRep = {
"",
"",
"",
"\"",
"&",
"<",
">",
" ",
"\xa1",//chr(161),
"\xa2",//chr(162),
"\xa3",//chr(163),
"\xa9",//chr(169),
"",
"\r\n",
""
};

string newReg =aryReg[0];
string strOutput=strHtml;
for(int i = 0;i<aryReg.Length;i++){
Regex regex = new Regex(aryReg[i],RegexOptions.IgnoreCase);
strOutput = regex.Replace(strOutput,aryRep[i]);
}
strOutput.Replace("<","");
strOutput.Replace(">","");
strOutput.Replace("\r\n","");
return strOutput;
}
}

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧