我有一个带有和弦的大文件(约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!
答案 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
,/
,-
或空格的所有行。