[mySQL] een heel woord matchen

Pagina: 1
Acties:

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Topicstarter
Ik ben op zoek naar een select om alleen hele woorden te matchen. De volgende dingen moeten dus wel gereturned worden als je zoekt op blaat:

• blaat
• blaat en nog meer
• dit is ook blaat

Maar dit juist niet:

• blaatjes
• ikblaatmaar een eind weg
• dus blaatuh we maar

Nu probeer ik dat al volgt op te lossen:
SELECT *
WHERE Woord REGEXP "[^ ]*blaat[$ ]*"
maar dit lijkt alle zes de voorbeelden te matchen :( Wat doe ik fout :?

http://www.mysql.com/doc/en/Pattern_matching.html

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

[^ ] matched 'geen spatie'
[$ ] doet een dollar of een spatie.

Je zult het met zoiets moeten oplossen dan:
(^| )blaat($| )

en je kan proberen of bijvoorbeeld \W (nonword char) of \b (boundary) werkt ipv die (...)

dus zoiets: \Wblaat\W of \bblaat\b

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Topicstarter
de $ is volgens de handleiding het einde van een string; en het ^ zou voor het einde begin (bedank ACM) van de string moeten staan. Vandaar dat ik het op die manier had neergezet.

Deze:
(^| )blaat($| )
werkt inderdaad perfect. Ik had deze
[^| ]blaat[$| ]
getest maar bedenk mij nu pas hoe stom dat is.

Bedankt dus! :)

[ Voor 4% gewijzigd door Spider.007 op 02-04-2003 23:38 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Spider.007 schreef op 02 April 2003 @ 23:24:
de $ is volgens de handleiding het einde van een string; en het ^ zou voor het einde van de string moeten staan. Vandaar dat ik het op die manier had neergezet.

Behalve dat ^ voor het begin staat, klopt wat je daar zegt :)
Echter binnen de [] vervalt de speciale betekenis van de $ (is het dus gewoon het dollarteken) en de ^ in het begin is de 'negatie' van de tekens (dus 'geen spatie' in jouw geval) :)

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Topicstarter
Ik begin inderdaad pas net met regexp's en dit was mijn eerste keer regexp in mySQL; dus daar komen de slordigheidsfoutjes vandaan. Ik ben blij dat je me zo snel hebt kunnen helpen; want ik was er zelf namelijk niet achter gekomen. Dit is ook een puntje van kritiek op de mySQL manual; er staat daar nergens genoemd in hoeverre ze voldoen aan standaarden voor regexps; en de voorbeelden bevatten ook niet echt ingewikkelde dingen; in tegenstelling tot bijvoorbeeld de PHP handleiding die op dat gebied een stuk verder gaat. Ik had op de bewuste pagina van de mySQL handleiding iig een linkje naar een echte regexp site verwacht.

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate