Regex以选择特定字符之前的所有逗号

本文关键字:选择 字符 Regex | 更新日期: 2023-09-27 18:10:35

我有一个可怕的时间与正则表达式。我承认这很糟糕,但是当我需要的时候,我没有足够地使用它们来成为真正优秀的人。基本上,由于应用程序的运行方式,我将.csv文件的内容拉出为字符串。我需要在已经存在的行上面和下面插入一个新的行。列的数量可以根据报告而变化。我想做的是抓取所有逗号,没有任何其他字符(包括空格),直到字符串中的第一组'r'n。这样我就有了所有的列,我可以在上面插入一个空白行,并用我需要的东西填充这些列。下面是一个。csv文本的示例:

"Date, Account Code, Description, Amount'r'n23-Apr-13,12345,Account1,$12345'r'n"

我希望正则表达式抓取的内容:

",,," or ",,,'r'n"

我似乎就是不明白。谢谢你。

Regex以选择特定字符之前的所有逗号

你不需要一个正则表达式。

string firstLine = file.ReadLines().First();
int numCommas = firstLine.Count(c => c == ',');
string commaString = new String(',', numCommas);

如果您没有访问file.ReadLines()方法的权限,您可以使用以下链接:

string firstline = test.Substring(0, test.IndexOf(Environment.NewLine));

您实际上不需要使用正则表达式来使代码复杂化,就可以实现您想要的功能:计算列数。

这里有一个非常简单的方法:

String textline = csvtext.Substring(0, csvtext.IndexOfAny(Environment.NewLine.ToCharArray()));
int columns = textline.Split(',').Length;

现在columns变量有您的总列数。


第一行从CSV文本中抓取第一行。第二行将该文本分割成一个以逗号(,)分隔的数组,并返回总数。

你可以使用下面的正则表达式(?<=['d'w's])('r|'n|,)(?=['d'w's'W])要匹配和新建行字符,使用可以使用Regex.Replace("inputstring","regexpattern","replacechar", RegexOptions.IgnoreCase)

这可以通过字符串操作本身来完成

string[] strs= inputstr.split(new string[]{"'n","'r",","}, StringSplitOptions.RemoveEmptyEntries);
foreach(string str in strs)
{
// do you part
}