我正在寻找有关 RegEx 模式的一些指导。
我有一个管道分隔文件,我想删除第四个单元格为空白的所有行。每行可以有任意数量的单元格。
到目前为止我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace EpicRemoveBlankPriceRecords
{
class Program
{
static void Main(string[] args)
{
string line;
// Read the file and display it line by line.
System.IO.StreamReader inFile = new System.IO.StreamReader("c:\\test\\test.txt");
System.IO.StreamWriter outFile = new System.IO.StreamWriter("c:\\test\\test_out.txt");
while ((line = inFile.ReadLine()) != null)
{
Match myMatch = Regex.Match(line, @".*\|.*\|.*\|\|.*");
if (!myMatch.Success)
{
outFile.WriteLine(line);
}
}
inFile.Close();
outFile.Close();
//// Suspend the screen.
//Console.ReadLine();
}
}
}
这行不通。我认为这是因为 RegEx 是“贪婪的”——如果有任何空白单元格,这匹配,因为我没有明确地说“捕获除了管道字符之外的所有内容”。一个快速的谷歌,我发现我可以在模式中使用 [^\|] 来做到这一点。
因此,如果我将模式更改为:
".*[^\|]\|.*[^\|]\|.*[^\|]\|\|.*"
为什么这也不起作用?
猜猜我有点困惑,任何指针将不胜感激。
谢谢!