Regulære uttrykk.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Hvordan skrive en vitenskapelig artikkel?
Tabeller av objekter Klassen ArrayList
Bygg web på Opplæring Presentasjon Idium AS Bygg web på Opplæring.
Håndbok til Studweb LES DENNE! Du får en side-for-side veiledning med forklaringer og tips…
Nytt fra IF Innhold • Justeringer på • Messer • Aftenposten-bilag • Studentum • Studiestart • Folkehøgskolekatalogen.
Krav til rettslig grunnlag for behandling av personopplysninger
Filbehandling (Kapittel 8)
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
Høgskolen i Oslo Webprogrammering Grunnleggende PHP.
Opprette Gmail-konto Lærer/ledsager 3i Opprette Gmail-konto
Gjenfinningssystemer og verktøy II
Kontrollstrukturer (Kapittel 3)
Noen matematiske nøtter
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
XMLSchema.  Innledende eksempler: Tove 4. Janni 5. Huskelapp 6. Ikke glem avtalen til helgen 7. Vi har sett DTD’en til dette xml dok. Her kommer.
MATLAB En kort innføring/repetisjon SIF8001-SIF8005 Høsten 2001.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Hvordan spre budskapet gjennom PR?
EcmaScript 5 Arrays Demonstrasjon av ny funksjonalitet støttet i IE 9.
IS-102 Klassedefinisjoner
Skanning – del I 4/4/2017.
1 (Helst) alle, men minst 1 i gruppa oppretter følgende: Personlig hjemmeside (indexside) Lenkeside / Generell faglig ressurside (Side med generelle allmennlærerfaglig.
Databasehåndtering med MySQL
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 7.9 Bakgrunn for øvelse 2 Bruk av variabler i beregninger Ser på tekststrenger (3.4 Strings.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
INF150 Programmering mandag 11.9
Bruk av PHP. Nyttige funksjoner Tidsfunksjoner –Time(), date(), checkdate(), mktime() Tabellfunksjoner –Navigasjon current(), key(), next(), prev(), end(),
Orientering om In104 Aslak Tveito Institutt for Informatikk Universitetet i Oslo
Mange IT-prosjekter kunne med fordel vært drevet mer som en Lean Startup.
HVORDAN SLETTER DU DIN FACEBOOKKONTO ?
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
1 Arrayer og form(ularer) (Kapittel 4). 2 Mål  Forstå assosiative og superglobale arrays  Kunne behandle webformularer (forms)  Kjenne forskjellen.
Høgskolen i Oslo Webprogrammering Filbehandling i PHP.
Mål Gjennomgå deler av de mest brukte funksjonene relatert til
Grunnleggende PHP - Ronny Mandal1 Grunnleggende PHP.
Intro til php - Uke3.2 - Ronny Mandal Introduksjon til PHP.
Structured Query Language Kræsj-kurs
Høgskolen i Oslo Webprogrammering Ajax og PHP. I dag l Hvordan få en bedre brukeropplevelse via Ajax- script l Gjennomgang av kode l Oppgaveløsning på.
Webprogrammering Skjema i HTML og PHP.
Høgskolen i Oslo Webprogrammering Java-scripting 2 Klientvalidering.
Stringmanipulasjon, RegEx og validering
De 100 mest brukte ordene i bøker i klasse..
Skjema/Forms HTML II IT og læring 2/20 november 2001.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Dynamiske nettsider PHP Del 1 – variable. PHP  PHP (Personal Home Page)  Fritt tilgjengelig programmeringsspråk  åpen kildekode  Plattformuavhengig.
Kort om XML Språket om språket. XML: Eksempel Hans Tømmerholt.
Møte med veiledere og kontaktpersoner Informasjon om en ukes praksis på fjerde semester av Lektorprogrammet.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
100 lure ord å lære.
Introduksjon til bruk av oversetterverktøy
INF2820 Datalingvistikk – V2012
Eksamen 2005, oppgave 2 Eksamen 2006, oppgave 2 Stein Krogdahl INF5110 – V2007.
Termbaser Lars Nygaard. Termbaser Database over begreper Innhold –Definisjoner –Oversettelser –Leksikalske relasjoner –Eksempler.
En formel er gyldig hviss den sann i alle tolkninger Utsagnslogikk Tolkning = linje i sannhetsverditabell Altså: En formel er gyldig hviss den har T i.
ADR & SCANNERKORT. Automatic Delivery Rewards (ADR) Den enkle måten å handle produkter på, med levering hver måned. Du har fordelen av en rabatt på 5.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Inf1000 (Uke 10) HashMap og ArrayList
INF1000 (Uke 4) Mer om forgreninger, While-løkker
HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 5 Vilkårssetningar og løkker. 5.1 Boolske uttrykk George Boole ( ), britisk matematikar Utvikla teori om logikk ved bruk av symbol i.
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 14.9 Ulike måter for å lese inn og skrive ut data. Kap. 3.5 mer om if – setninger Ferdige.
Registrering av testresultater fra mobiltelefon
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Lær å opprette den elektroniske ID-en MinID
IS-102 Interaksjon med objekter
Utskrift av presentasjonen:

Regulære uttrykk

Regex En streng som beskriver eller korrelerer til en mengde strenger, dvs. én eller flere. Korrelasjonen bestemmes av mønsteret i denne strengen, som er underlagt regler. Mye brukt i mange programmeringspråk, deriblant C/C++, Perl, Java,…,PHP Stort felt – trenger ikke nødvendigvis kunne alle aspekter for å bruke det

Eksempel 1 Vi vil finne ut som en bruker har tastet inn en gyldig e-post adresse, basert kun på syntaks: ronnyma@math.uio.no kari.bremnes@fara.mexico.com

Eksempel 1 Intuitiv måte å gjøre denne oppgaven på: Lage en løkke som tar for seg strengen Opprette et ”bokholderi”, for eksempel sjekke at den inneholder kun lovlige tegn, en ”@” og bare lovlige tegn, et ”.” og en sekvens av lovlige tegn med to, tre eller fire tegn

Eksempel 1 $str = "ronnyma@uio.no"; for( $i = 0; $i < strlen( $str ); $i++ ) { $sc = $str[ $i ]; if( !check_char( $sc ) ) echo "Invalid character $sc<br>"; } function check_char( $str ) $valid = false; $value = ord( $str ); if( ( $value > 47 && $value < 58 ) || ( $value > 63 && $value < 90 ) || ( $value > 96 && $value < 122 ) || $value != 46 || $value != 95) $valid = true; return $valid;

Eksempel 1 Tungvindt, ressurskrevende og uoversiktlig I tillegg sjekker vi ikke for mønster x antall tegn, og (alternativt) ”.” + x antall tegn så mange ganger vi vil @ Tilslutt: ”.” + 2, 3 eller 4 bokstaver

Konklusjon eks. 1 Det må / burde finnes en bedre måte Det gjør det, heldigvis. Svaret er regulære uttrykk (Regex)

Eksempel 2 ronnyma@math.uio.no Denne ”strengen” følger et mønster, likt det som ble beskrevet for to slider siden En regex-streng som ville korrelere til denne: [a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*\.[a-zA-Z]{2,4} Snart vil denne være like selvsagt for deg som 呀, 呀, 祖 母 er for en kineser

Verktøy http://www.roblocher.com/technotes/regexp.aspx Regex-coach for win32 (gratis)

Bruksområder Parse en html-side, f. eks ”låne” aftenposten.no’s valutakurser Hente ut annen info fra en tekstfil Validere input Avansert søkning og erstatting i tekst (jmf. str_replace())

Matche enkelt-tegn . = ett enkelt tegn, bortsett fra []\^$.|?*+() a = a, b = b etc. (0-9) [abc] = a eller b eller c [^abc] = alt annet enn a,b og/eller c \tegn = escape \d = numerisk tegn \s = whitespace (mellomrom, linjeskift etc)

Eksempel ”php” matches av: Dette er en setning IPV4: ^php, [ph]+, php$ og ^php$, ., .{3}, .+ Dette er en setning [setnig]+ , $setning Ikke: ^setning (hvorfor kommer senere) IPV4: (\d{1,3}\.){3}(\d{1,3})

Kvantifikatorer ? Kun en tillatt, men ikke påkrevet * Mange tillatt, men ikke påkrevet + En påkrevet, men mange tillatt {a,b} a påkrevet, b tillatt {a} a påkrevet

Eksempel Et ord på minst 3, maks 10 bokstaver .{3,10} Et ord på 5 bokstaver, som består av tegnene n, o, r, g og e [norge]{5}, [groen]{5} matcher norge, groen etc c+ minst én c, men sa mange man vil c* så mange man vil, inkludert 0 c? en eller ingen

Posisjoner ^ Posisjonen ved linjestart $ Posisjonen ved linjeslutt \< Posisjonen ved ord-start \> Posisjonen ved ord-slutt

Eksempel Dette er en streng ^en \<en streng$ en$

Annet | or, dvs. gruppering av flere uttrykk (..) Gruppering for kvanitifikatorer (bla.a)

Eksempel (\d{10,15}) | (\d{3,5}) <\s*body\s*> <\s*img\s+src\s*=\s*\”.+\”\s> <h[123456]> <h[1-6]> [1234567890a-fA-F]

En liten oppgave Hvorfor får vi ikke treff her: q[^u] på Quantas og Iraq

En til På engelsk skrives farge slik: color og colour Skulle vi da søke etter dette ordet, hvordan er det smart å gå frem? Først color, så colour? Eller: col[ou]{2}r? -> også coluor Bedre med col(o|ou)r

Mer… Vi kan skrive 1000000, 1 000 000 eller ”én million” (revisorer skriver 15 tusen i stedet for 15 000) Lag et regex som matcher!

Tidsangivelse Klokken skrives typisk slik: (i USA) 9:17 am, 12:30 pm [0-9]?[0-9]:[0-9] [0-9] (am|pm) plukker opp de to foregående, men også 99:99 pm Riktig er: (1[012]|[1-9]):[0-5][0-9] (am|pm) Utvid til å gjelde 24-timers tidsangivelse [01]?[0-9]|2[0-3]

Hvordan bruker vi dette ifb. php ereg( ”<expr>”, $streng [, grupper] ) eregi ( ”<expr>”, $streng [, grupper] ) ereg_replace( ”<expr>”, ”<inj>”, $streng ) eregi_replace( ”<expr>”, ”<inj>”, $streng ) split( ”<expr>”, $streng [, grense] ) spliti( ”<expr>”, $streng [, grense] )

Eksempel Gyldig e-post adresse? <?php $str = "ronnyma@math.uio.no"; if( ereg( "^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[A-Z]{2,4}$", $str ) ) { //Valid } ?> ereg returnerer 0/1 på grunnlag av match eller ei

Et annet eksempel Erstatte ord i en tekst <?php $str = "Per han hadde en bondegård"; $str = ereg_replace( "Per", "Kari Bremnes", $str ); echo $str; ?> Kari Bremnes han hadde en bondegård Vi husker str_replace() fra forrige gang?

Enda et $str = "Jeg husker den gangen jeg red et esel som hesebleste i Estland"; $str = split( "e", $str ); foreach( $str as $value ) echo $value."<br>\n"; ?> 0 => J 1 => g husk 2 => r d 3 => n gang 4 => n j 5 => g r 6 => d 7 => t 8 => s 9 => l

Grupper i regex <?php $str = "Det er deilig å være Norsk i Danmark lige så"; eregi( "(lig).*(så)", $str, $regs ); foreach( $regs as $key => $value ) { echo $key." => ".$value."<br>\n"; } ?> 0 => lig å være Norsk i Danmark lige så 1 => lig 2 => så

Spørsmål? Have a nice day!