Toon posts:

[C#] Reguliere expressie leest niet tussen haakjes?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mede tweakers,

Ik zit hier met een raar probleempje. Ik ben net nieuw met C#, en ik kom er totaal niet uit. Ik heb gezocht op google en GoT, maar kan het niet vinden.

Het probleem:
Ik ben een IRC bot aan het maken, en ik wil simpel een nickname lezen. Nu stuurt een IRC server zodra iemand joint het volgende:
:[C-Sharp]_GUI_Bot!CMbot@__HOSTNAME__ JOIN :#test

Waarvan "[C-Sharp]_GUI_Bot" de nickname is van de gene die joint. Nu heb ik met de .Split functie alle woorden uit elkaar gehaald, en gebruik ik de volgende regex op het eerste woord:

C#:
1
2
3
4
5
6
7
Regex RegexUser = new Regex("^:(.+?)!");

MatchCollection MatchUser = RegexUser.Matches(pWords[0]);

Match Username = MatchUser[0];

// Username.Value zou nu de nickname moeten bevatten


Echter geeft Username.Value mij nu ":[C-Sharp]_GUI_Bot!" wat ik dus niet wil. Dan zou je denken mischien moet je Matchuser[1] gebruiken (werkt iig bij PHP zo), maar dan krijg ik een error.

Ik heb ook de volgende manier geprobeert, maar ook tevergeefs:

C#:
1
Match User = Regex.Match(pWords[0], "^:(.+?)!");


Weet iemand wat ik fout doe?

Alvast bedankt! :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:23

gorgi_19

Kruimeltjes zijn weer op :9

:?

Je krijgt toch precies wat je wilt? Je wilt alle karakters hebben die beginnen met : en eindigen met !. Dat is de enige tekenreeks die aan die voorwaarde voldoet.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
je krijgt de match die je wilt... de : en ! zijn onderdeel van de match.... anders replacen?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:34

mulder

ik spuug op het trottoir

Username.Groups[1].Value :)

oogjes open, snaveltjes dicht


  • Helza
  • Registratie: Maart 2003
  • Laatst online: 18-11 13:22
/oeps te laat.. ik ga opzoek naar de delete knop :)
/zoek.... zoek zoek..
* Helza kan geen delete knop vinden :(

[ Voor 129% gewijzigd door Helza op 13-05-2007 20:51 ]


Verwijderd

Topicstarter
Geweldig! Dit is hem helemaal! Bedankt! :)

Rest ook bedankt :)

  • Brainstorm
  • Registratie: November 2000
  • Laatst online: 29-11 11:17
Kun je ook doen met een named group, vind ik persoonlijk iets netter:

C#:
1
2
3
Regex RegexUser = new Regex("^:(?<botname>.+?)!");
Match Username = RegexUser.Match(pWords[0]);
string botName = Username.Groups["botname"].Value;

Programmer's Drinking Song: 99 little bugs in the code, 99 bugs in the code, Fix one bug, compile it again, 100 little bugs in the code. (go to start if bugs>0)

Pagina: 1