如何使用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. } }