首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

正则-怎么用正则匹配txt文档中的内容,并读取出匹配的内容~

2012-01-26 
正则高手请进----如何用正则匹配txt文档中的内容,并读取出匹配的内容~~~rt[解决办法]这个比较好。上面写了2

正则高手请进----如何用正则匹配txt文档中的内容,并读取出匹配的内容~~~
rt

[解决办法]
这个比较好。上面写了2个不完善。
(? <=DX ?=\D*?)(?!0{2,}(\.0+)?)\d+(\.\d+)?
[解决办法]
有两种方式,我这没有那么大量的数据,效率不好说,楼主看下吧

int state = 0;
Regex reg = new Regex(@ "(? <=DX\s*=\s*-?)\d+(?:\.\d+)? ", RegexOptions.Compiled);
using (StreamReader sr = new StreamReader(@ "e:\test.txt ", System.Text.Encoding.Default))
{
while (sr.Peek() > = 0)
{
string line = sr.ReadLine();
if (state == 0)
state = 1;
else if (state == 1)
{
richTextBox2.Text += reg.Match(line).Value + "\n ";
state = 2;
}
else
state = 0;
}
}

上面是根据你给的数据的规律,只去匹配数据行,这个要求所有txt都符合这个数据出现的规律,否则不适用


string content = string.Empty;
Regex reg = new Regex(@ "(? <=DX\s*=\s*-?)\d+(?:\.\d+)? ", RegexOptions.Compiled);
using (StreamReader sr = new StreamReader(@ "e:\test.txt ", System.Text.Encoding.Default))
{
while (sr.Peek() > = 0)
{
string line = sr.ReadLine();
content = reg.Match(line).Value;
if (content.Length != 0)
richTextBox2.Text += content + "\n ";
}
}

这个是每行都匹配,然后判断结果是否为空

当然,由于你这里只是为了匹配,而不是验证规则,所以如果能确保一定有沁数点,那么正则可以用
Regex reg = new Regex(@ "(? <=DX\s*=\s*-?)\d+\.\d+ ", RegexOptions.Compiled);
[解决办法]
非组捕获。取消分组,提高效率。

热点排行