微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式

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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐