Archief voor de categorie » taal «

Maandag, 6 april, 2009 | Auteur:

Een collega is op zoek om te leren regex dus ik besloot om het hier te zetten. Dit is de eerste in een reeks van regex gerelateerde artikelen. In de delen te volgen, we gaan worden met behulp van onze Reguliere expressies naar andere onderwerpen op het internet relevante leren terwijl simltaneously uitbreiden op regex kennis.

Regex Quick Start

  1. Een verticale balk |, soms als een pijp, is een “OR” operator in reguliere expressies. Het geeft aan dat het patroon naar links of rechts aanvaardbaar. Op het toetsenbord, Deze toets is meestal de “hoofdstad”, of “verschoven versie”, van de backslash sleutel.
  2. Haakjes zijn ronde haken () dat selecteert u een gedeelte van een reguliere expressie. Ze kunnen eveneens worden gebruikt als de in de wiskunde volgorde van bewerkingen ingesteld. De “selectie” kan elders worden verwezen hoewel we dat later zullen dekken.
  3. Een stip . is een speciaal karakter dat past ieder karakter andere dan “nieuwe lijn” karakters.
  4. Een backslash \ wordt soms een ontsnappen karakter. Er zijn vele personages, zoals de haakjes en de verticale balk boven, die een speciale betekenis hebben. De backslash wordt gebruikt om mee te nemen (ontsnappen) die een speciale betekenis. Bij voorbeeld, tot een feitelijke volledige stop te specificeren, je nodig hebt om de speciale dot karakter ontsnappen: \.
  5. Een ster * een operator die aangeeft dat het voorgaande teken nul of meer keer kan worden herhaald. Dit wordt vaak gecombineerd met de punt van een te produceren “wildcard” patroon, waarbij een reeks van willekeurige lengte past: .*

Met behulp van de verticale balk en de escape-teken

Hier hebben we een aantal voorbeeld webadressen:

http://dogma.swiftspirit.co.za/
http://swiftspirit.co.za/
http://google.com/

Als ik wil een patroon dat ze allemaal past, Ik kon de verticale balk te gebruiken (regel 1 boven) om ze te scheiden. Ik zou dan ook moeten de escape-teken gebruiken (regel 4 boven) voor de volledige stops:

http://dogma  .swiftspirit  .co  .za /|http://swiftspirit  .co  .za|http://google  .com /

Om zal boven elke URI passen in mijn voorbeeld is het echter niet specifiek efficiënt en elegant.

Met behulp van haakjes

Hetzelfde kan worden bereikt met de volgende, kortere, regex, gebruik te maken van het haakje van de regel 2 boven:

http://((|dogma .)swiftspirit  .co  .za|google  .com)/

Merk op dat ik gewoon heb geplaatst gemeenschappelijke punten, bij voorbeeld “http://” en “/”, buiten de selecties.

Wat als u tekst wilt dat er iets zou kunnen overeenkomen?

Misschien heb je meer dat je nog wilt passen? Bij voorbeeld, als ik http://swiftspirit.co.za/downloads/ en ik wil nog steeds het patroon aan te passen dat of een andere url onder mijn website. Of misschien zijn goed voor http://iets.google.com/iets ook overeenkomen. We kunnen de speciale stip en ster tekens van regels gebruiken 3 en 5 van boven:

http://((|dogma .)swiftspirit  .co  .za|(|.*\.)google  .com)/.*

Gewoon toe te voegen dat elk teken nul of meer keer kan verschijnen laat veel meer wedstrijd zonder al te veel toe te voegen aan de complexiteit van de regex's:

(|.*\.)

Het bovenstaande is vanaf de voorzijde van het patroon google.com. De verticale balk geeft twee opties hier: ofwel leeg (zodat we uiteindelijk met slechts google.com), of .*\. (dus we hebben iets gevolgd door een letterlijke punt en dat wordt gevolgd door google.com).

Praktijk maakt perfect

We kunnen nu al zien uit de laatste voorbeeld dat een reguliere expressie zeer snel complex kan worden. Net als elke taal, die gemakkelijk kunnen lezen van een reguliere expressie vergt oefening. Als u een relevante behoefte om te werken met reguliere expressies hebben, je bent in voor een traktatie.

Deel 2 gepast in een paar dagen zou moeten zijn. Ik zal doen wat zeer indirecte “werk”, laten zien hoe je DNS caches te spoelen in een verscheidenheid van systemen.

Delen
Dinsdag, January 13th, 2009 | Auteur:

(20:19:25) Een: was playing WoW on Saturday
(20:19:40) B: yea dude
(20:19:44) Een: They have chat channels similar to IRC, though its specific to the area you’re in
(20:19:52) B: lol
(20:20:01) B: thats kewl
(20:20:05) Een: a guy put inI can like to be wearing… “
(20:20:23) Een: so I replieda jean pant
(20:20:28) B: lol
(20:20:50) Een: and he repliedof ‘n rokkie
(20:21:00) Een: I fell off my chair

Delen