Ik wil een tekst parsen. Dit doe ik met indexOf en substring etc. Nu dacht ik, laat ik eens met regular expressions aan de gang gaan. Ik had een keer begrepen dat dat wel snel scheen te zijn.
Dus ik aan de slag, maar nu blijkt dat mijn regEx langzamer is dan mijn indexOf en substring bewerkingen. Ok, het scheelt niet veel, op 40.000 geparste regels scheelt het 2 à 3 seconden, maar toch. (regex: 15 seconden, indexof + substring 12,5 seconden)
Het gaat om dit soort teksten:
"Timbaz: raises $0.60 to $2.30 and is all-in"
"styx2000: raises $0.04 to $0.08"
Ik parse deze tekst met deze regex:
Is mijn regex slecht geschreven?
Is het goed geschreven maar gewoon traag?
Gebruik ik het verkeerd?
Of is het er niet voor bedoeld om zo gebruikt te worden?
En dezelfde code maar nu onder elkaar, voor de mensen die dat prettiger vinden:
Dus ik aan de slag, maar nu blijkt dat mijn regEx langzamer is dan mijn indexOf en substring bewerkingen. Ok, het scheelt niet veel, op 40.000 geparste regels scheelt het 2 à 3 seconden, maar toch. (regex: 15 seconden, indexof + substring 12,5 seconden)
Het gaat om dit soort teksten:
"Timbaz: raises $0.60 to $2.30 and is all-in"
"styx2000: raises $0.04 to $0.08"
Ik parse deze tekst met deze regex:
C#:
1
| Regex raiseRegex = new Regex("(?<name>.+)(: raises )(?<raiseBy>[\\$|\\d|\\.]+) to (?<raiseTo>[\\$|\\d|\\.]+)(?<allIn> and is all-in)?"); |
Is mijn regex slecht geschreven?
Is het goed geschreven maar gewoon traag?
Gebruik ik het verkeerd?
Of is het er niet voor bedoeld om zo gebruikt te worden?
En dezelfde code maar nu onder elkaar, voor de mensen die dat prettiger vinden:
code:
1
2
3
4
5
| Regex raiseRegex = new Regex(
"(?<name>.+)
(: raises )
(?<raiseBy>[\\$|\\d|\\.]+) to (?<raiseTo>[\\$|\\d|\\.]+)
(?<allIn> and is all-in)?"); |
[ Voor 3% gewijzigd door Verwijderd op 10-01-2007 16:58 ]