正则表达式从文本文件中删除和弦

时间:2011-02-15 17:02:43

标签: c# regex logic

我有一个带有和弦的大文件(约20k行)。

我正在尝试制作一个程序来删除文件中的和弦。

我找到和弦的正则表达式是:

Regex regex = new Regex("([A-G](#|b)*([a-z]|[0-9])*)(/[A-G](#|b)*([a-z]|[0-9])*)*");

问题是一个逻辑问题。

如何使用我的正则表达式检测我的文本行是否只有和弦?

更新: 文件样本:

C                                     G 
Justo é o Senhor em seus santos caminhos, 
A -             G/B C     D4 D G 
Benigno em todas  as  suas  obras.  (bis) 
G          C          C7 
Perto está  o Senhor, (perto está dos que o invocam,) 
     F   C  D -   G  C               F        G         C F  
De todos que o invocam  (De todos que o invocam) 
C/G G   C                        F C 
Em   verdade. Aleluia! Aleluia! 

2 个答案:

答案 0 :(得分:2)

您可以将正则表达式包装在^...$中来锚定它 这将迫使它匹配整行。

然后您可以循环浏览File.ReadLines,如下所示:

var nonChords = File.ReadLines(path)
                    .Where(s => !regex.IsMatch(s));

答案 1 :(得分:1)

这个怎么样:

resultString = Regex.Replace(subjectString, @"^[A-G\d#b\s/-]*$(?:\r\n)?", "", RegexOptions.Multiline);

这将删除仅包含字母A到G,#b/-或空格的所有行。