Comment faire correspondre début ou à la fin d'une ligne à l'aide de C#Regex?
J'essaie de correspondre à cette expression:
^COMA1TA2000,.*$
avec ce texte:
# 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
Je peux le faire à l'aide de Notepad++, mais je ne peux pas avec le C# Regex classe.
content = sr.ReadToEnd();
string pattern = "^COMA1TA2000,.*$";
if(Regex.IsMatch(content, pattern))
System.Windows.Forms.MessageBox.Show("Test");
Ce qui me manque?
- Juste pour être clair, votre
IsMatch
ligne est de retour faux?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
RegexOptions.Multiline
, comme suit:Docs: http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx
Si
RegexOptions.Multiline
n'est pas définie,^
et$
correspondra début et à la fin* de la chaîne, pas la ligne comme prévu.Ou set option multiligne dans la regex
(?m)
:(?m)^COMA1TA2000,.*$
Utilisation
File.ReadLines
au lieu deReadToEnd
de la méthode et de l'appliquer regex sur chaque ligne.Ce que vous êtes en train de faire maintenant, c'est la lecture de l'ensemble du texte comme un bloc de texte et l'option Multiligne casse parfois les choses vers le bas (comme il existe différents caractères CRLF dans les différents systèmes d'exploitation, et des trucs comme ça).
Ma suggestion est: est-ce