如何使用C#的正则表达式匹配行的开头或结尾?

我正在尝试匹配这个表达式:

^COMA1TA2000,.*$ 

用这个文字:

 # Qualquer linha iniciada por # será ignorada # Caracteres que não podem serem usados na nomenclatura das copiadoras ou modelos. # &  " ' COMA1TA2000,ta-2000,hd,COMB1 #COMA2TA2000,ta-2000,hd,COMB2 #COMA3TA2000,ta-2000,hd,COMB3 

我可以使用Notepad ++来做到这一点,但我不能使用C# Regex类。

 content = sr.ReadToEnd(); string pattern = "^COMA1TA2000,.*$"; if(Regex.IsMatch(content, pattern)) System.Windows.Forms.MessageBox.Show("Test"); 

我错过了什么?

您可以使用RegexOptions.Multiline ,如下所示:

 Regex.IsMatch(content, pattern, RegexOptions.Multiline) 

文档: http : //msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx

如果未设置RegexOptions.Multiline ,则^$将匹配字符串的开头和结尾*,而不是预期的

或者在正则表达式中设置多行选项(?m) 🙁 (?m)^COMA1TA2000,.*$

使用File.ReadLines而不是ReadToEnd方法并在每一行上应用正则表达式。

您现在正在做的是将整个文本作为一个文本块读取,MultiLine选项有时会破坏(因为在不同的操作系统中有不同的CRLF字符,以及类似的东西)。

我的建议如下:

 string[] lines = File.ReadAllLines("path to your text file"); Regex regex = new Regex("^pattern$"); foreach (string line in lines) { Match match = regex.Match(line.Trim()) if (match.Successful) { // have your match here. } }