[RegEx] Tags verwijderen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Hallo,

Ik wil alle IMG-ubb tags uit een stukje tekst halen. Ik had als voorbeeld om andere tags eruit te halen en dit heb ik geprobeerd te verbouwen. Ik heb me een regex tester opgezocht en ben begonnen, alleen kom ik niet verder.
Het dichtste bij wat ik kom is dat hij me alle [ en ] weg haalt, maar niet de tussen liggende tekst.

Ik heb de FAQ van hier door genomen, en deze heeft een klein beetje geholpen, maar niet tot het gewenste resultaat geleid.

De volgende UBB code heb ik gebruikt
code:
1
/[\[img (*.?)\](*.?)\[\/img\]]/i


Deze moet de tekst:
Voor [ img xxx]imgsrc[/img] na [ b]binnen[/b]

Veranderen in:(Andere tags laten staan)
Voor na [ b]binnen[/b]

Waar ga ik fout in mijn reg-ex logica?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je escaped de [ en ] niet ;)
Waarom staan er überhaupt [ en ] om je regex en geen ( en ) ?

Disclaimer: * RobIII ook geen regex koning is :P

Volgens mij is het zoiets:
code:
1
/\[img(.*?)\](.*?)\[\/img\]/i

[ Voor 97% gewijzigd door RobIII op 26-01-2011 10:42 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

RobIII schreef op woensdag 26 januari 2011 @ 10:37:
Waarom staan er überhaupt [ en ] om je regex en geen ( en ) ?

Disclaimer: * RobIII ook geen regex koning is :P
Je hebt wel gelijk: nu is het een grote character class :) Er een subpattern van maken lijkt me echter ook niet noodzakelijk.

[ Voor 10% gewijzigd door crisp op 26-01-2011 10:42 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
crisp schreef op woensdag 26 januari 2011 @ 10:41:
[...]

Je hebt wel gelijk: nu is het een grote character class :)
My idea exactly :P
Ik moet ook altijd effe pielen voor ik een regex goed heb. Ik gebruik graag RAD Software Regular Expression Designer; die vind ik wel fijn werken om dit soort zaken uit te proberen. Maar het scheelt als je bekend bent met de basics van regex.
crisp schreef op woensdag 26 januari 2011 @ 10:41:
Er een subpattern van maken lijkt me echter ook niet noodzakelijk.
Jep, daar kwam ik net ook achter :*)

[ Voor 17% gewijzigd door RobIII op 26-01-2011 10:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Thanks, deze werkt wel, het probleem zat hem dus dat ik er een grote character class van gemaakt had?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Depress schreef op woensdag 26 januari 2011 @ 10:47:
Thanks, deze werkt wel, het probleem zat hem dus dat ik er een grote character class van gemaakt had?
Jep.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Depress schreef op woensdag 26 januari 2011 @ 10:47:
Thanks, deze werkt wel, het probleem zat hem dus dat ik er een grote character class van gemaakt had?
Ja, maar begrijp je nu ook waarom dat fout was en wat er nu eigenlijk wél in je regular expression stond? Want anders maak je de fout later gewoon weer. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Probleem zat het in de character class. Echter, het is 1 geheel de img tag, dus waarom zou het niet werken, mijn inziens is het effect het zelfde? Of kan in 1 character class maar 1x de wildcard( (*.?) ) voorkomen?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Depress schreef op vrijdag 28 januari 2011 @ 12:48:
Probleem zat het in de character class. Echter, het is 1 geheel de img tag, dus waarom zou het niet werken, mijn inziens is het effect het zelfde? Of kan in 1 character class maar 1x de wildcard( (*.?) ) voorkomen?
Een character class is iets als [a-f] waarbij alleen de letters a-f gematched worden. Als je dus blokhaken (lees: character class) gebruikt om een complete regex zoals jij dat deed dan krijg je nogal vreemde onbedoelde resultaten.

[ Voor 5% gewijzigd door RobIII op 28-01-2011 12:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

In een character class hebben o.a. de asterisk, punt en vraagteken geen speciale betekenis maar worden gezien als letterlijke tekens.

edit: zie ook hierboven :P

[ Voor 10% gewijzigd door crisp op 28-01-2011 12:54 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Plus dat een character class maar één teken matcht. Als jij de string "auto" wil matchen met de regexp /[auto]/, dan krijg je alleen de "a" terug, omdat dat de eerste match is aan één van de karakters in de verzameling a, u, t en o. Je zou dat kunnen afvangen door een * toe te voegen achter je character class: /[auto]*/ maar dan krijg je weer leuke dingen: hou je daar de string "autootje" tegen, dan matcht vervolgens "autoot" omdat al die letters in de character class zitten, maar "je" niet.

Lang verhaal kort: ik denk dat je er goed aan doet even een basiscursusje of tutorial regular expressions door te nemen. Je hebt een redelijk basaal onderdeel van hoe ze werken niet helemaal door. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1