2011-02-15 99 views
0

我有一個很大的文件(大約20k行)和絃的音樂。正則表達式從文本文件中刪除和絃

我試圖做一個程序從我的文件中刪除和絃。

我正則表達式查找和絃是:

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

的問題是一個邏輯問題。

如何檢測我的文本的一行是否只有使用我的正則表達式的和絃?

UPDATE: 文件的樣本:

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! 
+0

您能否提供該文件的示例。只是幾行? – Craigt 2011-02-15 17:07:04

+0

我會更新這個問題! – renanlf 2011-02-15 17:28:06

回答

1

如何:

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

這將刪除只包含字母A到G,#b所有線路, /,-或空格。

2

您可以通過在^...$包裹它錨定你的正則表達式。
這將迫使它匹配整條線。

然後,您可以遍歷File.ReadLines,像這樣:

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