日期:2014-05-19  浏览次数:21103 次

正则表达式如何写
string   tmp= "server=192.168.1.5;uid=sa;pwd=;database=yy ";

如何用正则表达式分别取出连接字符串中的用户名、密码和服务器,放在三个变量里?

------解决方案--------------------
string uid, pwd, server;
string[] strs = tmp.Split( '; ');
foreach(string s in strs)
{
if(s.IndexOf( "uid ")!=-1) uid = s.Substring(4);
else if(s.IndexOf( "pwd ")!=-1) pwd = s.Substring(4);
else if(s.IndexOf( "server ")!=-1) server = s.Substring(7);
}
------解决方案--------------------
string Reg=“server=([^;]*);uid=([^;]*);pwd=([^;]*);database=([^;]*) ";
------解决方案--------------------
string tmp = "server=192.168.1.5;uid=sa;pwd=;database=yy ";
Match res = Regex.Match(tmp, @ "server=(? <server> .+?);uid=(? <uid> .+?);pwd=(? <pwd> .*);database=(? <database> .+) ");
if (res.Success)
{
MessageBox.Show(res.Groups[ "server "].Value);
MessageBox.Show(res.Groups[ "uid "].Value);
MessageBox.Show(res.Groups[ "pwd "].Value);
MessageBox.Show(res.Groups[ "database "].Value);
}
试试?
------解决方案--------------------
高手,接分
------解决方案--------------------
using System.Text.RegularExpressions;

string tmp = "server=192.168.1.5;uid=sa;pwd=;database=yy ";
Match res = Regex.Match(tmp, @ "server=(? <server> .+?);uid=(? <uid> .+?);pwd=(? <pwd> .*);database=(? <database> .+) ");
if (res.Success)
{
MessageBox.Show(res.Groups[ "server "].Value);
MessageBox.Show(res.Groups[ "uid "].Value);
MessageBox.Show(res.Groups[ "pwd "].Value);
MessageBox.Show(res.Groups[ "database "].Value);

------解决方案--------------------
string sourceString = @ "server=192.168.1.5;uid=sa;pwd=;database=yy ";
string pattern = @ "uid=(? <uid> [^;]*);pwd=(? <pwd> [^;]*);database=(? <database> [^;]*) ";

Match mr = Regex.Match(sourceString, pattern, RegexOptions.IgnoreCase);
string result = string.Empty;
if (mr.Success)
{
result += mr.Groups[ "uid "].Value + "_ " + mr.Groups[ "pwd "].Value + "_ " + mr.Groups[ "database "].Value;
}
this.TextBox1.Text = result;

---------------------------------------------
EMail:bdbox@163.com 请给我一个与您交流的机会!
------解决方案--------------------
如果顺序完全无法确定的时候,可以这样做,但是如果顺序确定,最好还是用确定的写法,因为这样写虽然通用,但是效率不如确定写法的高


string yourStr = ...............;
Match m = Regex.Match(yourStr, @ "^(?=.*?server=(? <server> [^;]*)(?:;|$))(?=.*?uid=(? <uid> [^;]*)(?:;|$))(?=.*?pwd=(? <pwd> [^;]*)(?:;|$))(?=.*?database=(? <database> [^;]*)(?:;|$)).*$ ", RegexOptions.IgnoreCase);
if (m.Success)
{
MessageBox.Show(m.Groups[ "server "].Value);
MessageBox.Show(m.Groups[ "uid "].Value);
MessageBox.Show(m.Groups[ "pwd "].Value);
MessageBox.Show(m.Groups[ "database "].Value);
}
------解决方案--------------------