.NET Regex eerste karakater probleem

Pagina: 1
Acties:
  • 116 views sinds 30-01-2008
  • Reageer

  • Av3ng3rtje
  • Registratie: December 2002
  • Laatst online: 05-01 22:08
Ik heb in .NET de volgende regex geschreven:

code:
1
[^\\n](?<wtypeslot>[\w\s-]+[^<]?)?<span class=\\"wowrttxt\\">(?<wtype>[\w\s-]+[^<]?)+</span>


Om om deze code te matchen:

code:
1
<div class=\"wowitem\">\n<span class=\"iname\"><span class=\"orangename\">Thunderfury, Blessed Blade of the Windseeker</span></span><br />\nBinds when picked up<br />\nUnique<br/>\nOne-Hand<span class=\"wowrttxt\">Sword</span><br/>\n44 -  115 Damage<span class=\"wowrttxt\">Speed 1.90</span><br/>\n+ 16 -  30 Nature Damage<br/>\n(53.9 damage per second)<br/>\n+5 Agility<br/>\n+8 Stamina<br/>\n+8 Fire Resistance<br/>+9 Nature Resistance<br/>Requires&nbsp;Level&nbsp;60<br/>\n<span class=\"itemeffectlink\">Chance On Hit: <a href=\"http://wow.allakhazam.com/db/spell.html?wspell=21992\" class=\"itemeffectlink\">Blasts your enemy with lightning, dealing 300 Nature damage and then jumping to additional nearby enemies.  Each jump reduces that victim's Nature resistance by 25. Affects 5 targets. Your primary target is also consumed by a cyclone, slowing its attack speed by 20% for 12 seconds.</a>&nbsp;</span></div>


Het probleem is als kijk naar de uitkomst van mijn group values is dat:

wtypeslot: [ne-Hand]
wtype: [Sword]

is.

Ik heb een tooltje gedownload om te kijken wat je regex zeg maar match,, hier zie ik dat hij volledig het volgende stuk tekst match:

code:
1
One-Hand<span class=\"wowrttxt\">Sword</span>


Maar hij haalt de eerste letter van het woord One-Hand eraf.. ? weet iemand hier misschien een oplossing voor.. ik zit hier een al een paar uur mee te klooien en kom er niet echt uit.

Wat ik ook heb geprobeerd:

code:
1
[^\\n](?<wtypeslot>[\s\-A-Za-z]+[^<]?)?<span class=\\"wowrttxt\\">(?<wtype>[\s\-A-Za-z]+[^<]?)+</span>


maar dat geeft het zelfde resultaat.

[ Voor 5% gewijzigd door Av3ng3rtje op 29-08-2006 17:24 ]


  • WormLord
  • Registratie: September 2003
  • Laatst online: 01-12-2025

WormLord

Devver

Je begint je regex met [^\\n], wat betekend een teken dat geen new-line teken is. Volgens mij moet je juist wel een new-line teken matchen daar, dus met [\\n].

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-02 11:06

Janoz

Moderator Devschuur®

!litemod

Een regexp lijkt me de meest onlogische keuze om dit stukje tekst te verwerken. Een dom of sax parser lijkt me in dit geval veel voor de hand liggender.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Av3ng3rtje
  • Registratie: December 2002
  • Laatst online: 05-01 22:08
Janoz schreef op woensdag 30 augustus 2006 @ 09:09:
Een regexp lijkt me de meest onlogische keuze om dit stukje tekst te verwerken. Een dom of sax parser lijkt me in dit geval veel voor de hand liggender.
Mag ik dan ook vragen waarom , als ik zoek op SAX parser krijg ik alleen maar dingen over XML... Ik gebruik regexp voor veel meer dingen in deze applicatie, als ik een SAX parser zou gebruiken zou ik alleen bv de naam en de type kunnen achterhalen, resistances, strength, agility, etc zijn allemaal stukken tekst die niet specifiek allemaal hun eigen tag hebben.

[ Voor 26% gewijzigd door Av3ng3rtje op 30-08-2006 12:11 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-02 11:06

Janoz

Moderator Devschuur®

!litemod

Maar met door eerst de xml te verwerken hou je uiteindelijk wel de textnodes over waar die info in staat. Wat ik nu in je regexp zie staan is vooral het uitzoeken van de verschillende spans. Dat gaat met een dom tree veel makkelijker.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'