日期:2014-05-18  浏览次数:20761 次

各位兄弟,请帮忙解决用正则表达式提取字符串内容(急用)
有如下格式的字符串:
AAAAAAA=   [ntss3   ]\nBBBBBBB\t\t\t\t\t=   [20020425104835]\nCCCCCCCC\t\t\t\t=   [TESTSERV]\nDDDDDDD\t\t\t\t=   [SVPORT]\nEEEEEEE\t\t\t\t\t=   [1234567]\n

请大家帮忙提供1个提取字符   “[”和“]”之间的字符,并拼成1个新的字符串
的正则表达式。

急用,这里先谢过了。

------解决方案--------------------
string strInput = @ "AAAAAAA= [ntss3 ]\nBBBBBBB\t\t\t\t\t= [20020425104835]\nCCCCCCCC\t\t\t\t= [TESTSERV]\nDDDDDDD\t\t\t\t= [SVPORT]\nEEEEEEE\t\t\t\t\t= [1234567]\n "; //.+\[^\.][a-zA-Z0-9]+\.txt$
string strReg = @ "\[(? <s> [^\]]*)\] ";
string strResult = string.Empty;
MatchCollection matchCollection = Regex.Matches( strInput , strReg , RegexOptions.Multiline );
foreach( Match ma in matchCollection )
{
strResult += ma.Groups[ "s "];
}
Response.Write( strResult );
------解决方案--------------------
输出:ntss3 20020425104835TESTSERVSVPORT1234567
------解决方案--------------------
如果字符串数据量不是很大,最简单的就是用这种方式

string test = "AAAAAAA= [ntss3 ]\nBBBBBBB\t\t\t\t\t= [20020425104835]\nCCCCCCCC\t\t\t\t= [TESTSERV]\nDDDDDDD\t\t\t\t= [SVPORT]\nEEEEEEE\t\t\t\t\t= [1234567]\n ";
string result = Regex.Replace(test, @ "^[^\[\]]*\[|\][^\[\]]*\[|\][^\[\]]*$ ", " ");


如果数据量很大,可以用sbqcel(空空儿)的方法,不过是好是用StringBuilder,也可以用下面委托的方法


string test = "AAAAAAA= [ntss3 ]\nBBBBBBB\t\t\t\t\t= [20020425104835]\nCCCCCCCC\t\t\t\t= [TESTSERV]\nDDDDDDD\t\t\t\t= [SVPORT]\nEEEEEEE\t\t\t\t\t= [1234567]\n ";
sb = new StringBuilder();
test = Regex.Replace(test, @ "(? <=\[)[^\[\]]*(?=\]) ", new MatchEvaluator(regReplace));
string result = sb.ToString();


StringBuilder sb;
private string regReplace(Match m)
{
sb.Append(m.Value);
return string.Empty;
}