To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles
-> PRG
https://fgheysels.github.io/
Je hebt 2 soorten regular expressions : multi-line & niet multi-line.
Mijn ervaring is dat, als je geen multi-line regexen gebruikt, die ^(begin v/d regel) en $ (einde regel) instructies niet werken. (Geen idee of dit standaard is, of als dit enkel in .NET zo is, ik ben geen Regex guru oid en heb er mij verder ook niet in verdiept of dit normaal is of niet. ).
Als je dus die $ en ^ weglaat, dan zal je Regex wel een match geven.
Ook als je in de constructor van je Regex de optie aangeeft dat dit een Multiline regex is, zal je expressie wel werken met de $ en ^ karakters.
https://fgheysels.github.io/
Dan kan kloppen, de omschrijving van IsMatch is:Spiral schreef op maandag 28 juli 2008 @ 21:40:
tevens geeft
C#:
1 2 3 4 5 6 7 8 static void Main(string[] args) { if(Regex.IsMatch(@"^\d{5}$","12345" )) Console.WriteLine("Match"); else Console.WriteLine("No match"); Console.ReadLine(); }
ook het verkeerde resultaat.
1
2
3
4
| public static bool IsMatch ( string input, string pattern ) |
M.a.w.: je hebt je input en je pattern omgewisseld (wat je in je eerste codevoorbeeld trouwens niet deed). Probeer eens Regex.IsMatch("12345", @"^\d{5}$")
Voorbeeld: je wilt wel dat "AAABB" matched, maar niet dat "AAABBAAA" matched. De regex "^AAABB$" matched alleen de eerste, terwijl de regex "AAABB" de eerste en de tweede matched. Als het eerste niet kan, heb je een probleem.
[ Voor 8% gewijzigd door Confusion op 28-07-2008 22:15 ]
Wie trösten wir uns, die Mörder aller Mörder?
1
| Regex.IsMatch("12345", @"^\d{5}$"); |
Echter, op onderstaande manier moet ik wel de optie 'multiline' specifieren:
1
2
| Regex r = new Regex (@"^\d{5}$"); r.IsMatch("12345"); |
dit:
1
2
| Regex r = new Regex (@"^\d{5}$", RegexOptions.Multiline); r.IsMatch("12345"); |
returned dan weer true.
[ Voor 3% gewijzigd door whoami op 28-07-2008 22:21 ]
https://fgheysels.github.io/
Ai! dat krijg je als je iets overneemt vanuit het boek ...MrBucket schreef op maandag 28 juli 2008 @ 22:09:
[...]
Dan kan kloppen, de omschrijving van IsMatch is:
C#:
1 2 3 4 public static bool IsMatch ( string input, string pattern )
M.a.w.: je hebt je input en je pattern omgewisseld (wat je in je eerste codevoorbeeld trouwens niet deed). Probeer eens Regex.IsMatch("12345", @"^\d{5}$")

Maar het eerste voorbeeld vanaf de console werkt niet. volgens het boek van MCTS 70-536 Application Development Foundation zou het eerste voorbeeld echt moeten matchen dmv het aanroepen vanaf de commandline c:\>app.exe ^\d{5}$, 12345. Alleen hij geeft No match aan. En als ik het zonder de caret en dollar doe dan accepteert hij ook bv. aasb12345. En die wil
Het functioneert, ik heb het verkeerd geïnterperteerd. De regex doet wat het moet doen en accepteerd ook aasb12345. Ik zat te rommelen met de commandpromt runtime rebuilden ...
Morgen weer een nieuwe dag
[ Voor 12% gewijzigd door Spiral op 28-07-2008 22:52 ]
To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles
Zet eens een breakpoint op de aanroep van IsMatch, en debug je programma eens (let wel: de commandline parameters moet je dan specificeren bij de opties van je Project - rechtermuisknop op je Project, "Properties", en dan denk ik de Debug tabpagina, zo uit m'n hoofd). Kijk eens of hetgeen wat je via de commandline parameters specificeert ook op de juiste plek uitkomt in je call naar IsMatch.
--edit:
Ah, ok. Evengoed blijft mijn advies staan: leer te werken met de debugger van VS. Deze is zeer krachtig, en het helpt je tig keer sneller fouten uit je programma te halen dan d.m.v. trial and error.
[ Voor 19% gewijzigd door MrBucket op 28-07-2008 22:55 ]
vreemd; morgen met een frisse kop misschien nog eens kijken.
https://fgheysels.github.io/
Daar zal ik 'ns naar kijken.MrBucket schreef op maandag 28 juli 2008 @ 22:53:
Use the force debugger, young Skywalker![]()
de commandline parameters moet je dan specificeren bij de opties van je Project - rechtermuisknop op je Project, "Properties", en dan denk ik de Debug tabpagina, zo uit m'n hoofd
To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles
In je aanroep heb je echter een komma als laatste teken in je reguliere expressie staan. Dat gaat natuurlijk niet werken. Het moet zijn:
Aanroep: c:\>app.exe ^\d{5}$ 12345
http://www.ultrapico.com/ExpressoDownload.htm
werkt echt erg fijn om te testen en te debuggen.
Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...
Scherp van die komma! Die heb ik niet gebruikt op de console. De warmte speelde mij wellicht partenWormLord schreef op dinsdag 29 juli 2008 @ 09:30:
Ik heb even je eerste code voorbeeld getest en die werkt gewoon zoals het hoort.
In je aanroep heb je echter een komma als laatste teken in je reguliere expressie staan. Dat gaat natuurlijk niet werken. Het moet zijn:
Aanroep: c:\>app.exe ^\d{5}$ 12345
To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles