sql >> Database >  >> RDS >> Mysql

MySQL REGEXP woordgrenzen [[:<:]] [[:>:]] en dubbele aanhalingstekens

Ik citeer de documentatie eerst:

Uit de documentatie kunnen we de reden achter uw probleem zien en het wordt niet veroorzaakt door hoe dan ook te ontsnappen. Het probleem is dat je probeert om het woord grens [[:<:]] direct aan het begin van de tekenreeks die niet werkt omdat een woordgrens, zoals je kunt zien in de documentatie, een woordteken scheidt van een niet-woordteken, maar in jouw geval is het eerste teken een " wat geen woordteken is, dus er is geen woordgrens, hetzelfde geldt voor de laatste " en [[:>:]] .

Om dit te laten werken, moet je je uitdrukking een beetje veranderen in deze:

"[[:<:]]word[[:>:]]"
 ^^^^^^^    ^^^^^^^

Merk op hoe de woordgrens een niet-woordteken scheidt " van een woordteken w in het begin en een " van d aan het einde van de string.

BEWERKEN: Als u altijd een woordgrens aan het begin en einde van de tekenreeks wilt gebruiken zonder te weten of er een daadwerkelijke grens zal zijn, kunt u de volgende uitdrukking gebruiken:

([[:<:]]|^)"word"([[:>:]]|$)

Dit komt overeen met een woordgrens aan het begin of het begin van de tekenreeks ^ en hetzelfde voor het einde van de woordgrens of het einde van de string. Ik raad je echt aan om de gegevens die je probeert te matchen te bestuderen en naar gemeenschappelijke patronen te zoeken en geen reguliere expressies te gebruiken als ze niet het juiste hulpmiddel voor de klus zijn.

SQL Fiddle-demo



  1. NVL2-functie in Oracle

  2. MySQL - Kan geen weergave maken met SET-variabele erin

  3. Toont � in plaats van £

  4. Glassfish Admin Console gooit java.lang.IllegalStateException bij het maken van JDBC Pool