sql >> Databasteknik >  >> RDS >> Sqlserver

Hur reguljärt uttryck OR-operator utvärderas

Om du är intresserad av vad som händer när du använder | alterneringsoperatör , svaret är enkelt:regex-motorn bearbetar uttrycket och inmatningssträngen från vänster till höger .

Med mönstret du har som exempel, ^.{8}|.{12}$|.{4} börjar inspektera inmatningssträngen från vänster och letar efter ^.{8} - första 8 tecknen. Hittar dem och det är en match. Fortsätter sedan och hittar de sista 12 tecknen med .{12}$ , och återigen finns det en matchning. Sedan matchas alla strängar med fyra tecken.

Debuggex Demo

Därefter har du ^.{8}|.{4}|.{12}$ . Uttrycket tolkas igen från vänster till höger, de första 8 tecknen matchas först, men därefter kommer endast sekvenser med fyra tecken att matchas, .{12} kommer aldrig att avfyras eftersom det kommer att finnas .{4} matchar!

Debuggex Demo



  1. Varför är innodbs VISA TABELL STATUS så opålitlig?

  2. AsyncQuery med postgresql och dapper med npqsql

  3. Kopiera rader från en tabell till en annan med hjälp av INSERT-frågan

  4. Hitta rader som inte innehåller numerisk data i Oracle