加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 19:49:24 所属栏目:百科 来源:网络整理
导读:http://www.jbtraining.com.cn/base/net/608.html :原地址 什么是正则表达式? 正则表达式就是一个字符串,正则表达式是用来匹配数据的,和语言无关,在js中也要用到。正则表达式类似于通配符,但又不仅仅是通配符。 注意:不要想着一次性写出通用的正则表达

http://www.jbtraining.com.cn/base/net/608.html :原地址
什么是正则表达式?

  正则表达式就是一个字符串,正则表达式是用来匹配数据的,和语言无关,在js中也要用到。正则表达式类似于通配符,但又不仅仅是通配符。

  注意:不要想着一次性写出通用的正则表达式,够用就行,不行再改。


文字与非文字

  文字(数字,字母和汉字,不包含标点符号):

  文字:w

  非文字:W

  注意点:字符串转义与c#转义相同。即在文字前面加上一个@,例如:@"@w",找出以@开头的说有匹配文字。


在.Net中我们使用Regex类来书写正则表达式

  Regex的常用方法:

  IsMatch():判断是否匹配

  Match():字符串提取

  Matches():循环提取

  Replace():Replace()

例子:用正则表达式把HashTable中的数据一条条的读出来。

string str = @"insert into student values(@sname,@gender,@age)";

Hashtable table = new Hashtable();
table.Add("@sname","揽月");
table.Add("@gender","女");
table.Add("@age","24");
MatchCollection MC = Regex.Matches(sql,@"@w+");//MatchCollection:所有匹配的内容保存位置;Match是它的数据类型。
foreach (Match mc in MC)
{
string key = mc.Value;
Console.WriteLine(key);
object Value = table[key];
Console.WriteLine(Value);
}

这个例子在miniUI中传递sql时会用到。因为在MiniUI中页面表单中的数据是通过form传递,而在得到数据的时候用的是json.net,所以会用到ArrayList和HashTable,即本例中的这部分代码。

下面的“添加”是在表单通过Form提交后,并通过json.net把数据保存到HashTable后的那部分代码:

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;//正则表达式的命名空间
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
class Program
{
/// <summary>
/// 添加数据
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
#region
string ConnStr = "data source=.;initial catalog=Student;user id=sa; pwd=sa";
SqlConnection sqlConn = new SqlConnection(ConnStr);
SqlCommand sqlCmd = sqlConn.CreateCommand();
string sql = "insert into student values(@sname,@age)";
//看如何把HashTable中的数据保存到sql语句中
Hashtable table = new Hashtable();
table.Add("@sname","66");
MatchCollection ic = Regex.Matches(sql,@"@w+");
foreach (Match lst in ic)
{
string key = lst.Value;
object value = table[key];
Console.WriteLine(value);
if (value == null)
{
value = table[key.Substring(1)];
}
if (value == null)
{
value = DBNull.Value;
}
sqlCmd.Parameters.Add(new SqlParameter(key,value));
sqlCmd.CommandText = sql;
}
try
{
sqlConn.Open();
sqlCmd.ExecuteNonQuery();
}
catch
{
throw;
}
finally
{
if (sqlConn.State == ConnectionState.Open)
{
sqlConn.Close();
}
}
#endregion
}
}
}
}

注意:

@w+:即找出以@开头的文字,如查出@sname;

@w:即找出以@开头的文字,如查出@sname中的@s。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读