[php] regular expressions

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
Ik heb de volgende regular expressions.
PHP:
1
2
3
        $pattern_1part = "/##(\w*?)##/";
        $pattern_2parts = "/##(\w*?)_(\w*?)##/";
        $pattern_3parts = "/##(\w*?)_(\d*)_(\w*?)##/";

Deze wil ik graag combineren in 1 expression.
Dus als een string bijvoorbeeld ##blaat##, ##blaat_boe## of ##blaat_4_boe## ik een match[0] en/of [1] en/of [2] terugkrijg. Kan iemand mij verder helpen?

A smooth sea never made a skilled sailor


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

PHP:
1
$pattern = "/##(\w*?)((_(\d*))?_(\w*?))?##/";

:?

Gewoon meer groupen en wat vraagtekens toevoegen.

'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!

  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
mm.. ga weer even wat proberen, wat jij opgeeft resulteert in ieder geval niet in wat ik wil hebben.
http://gskinner.com/RegExr/

##blaat## no match
##blaat_dddd## no match
##blaat_44_blaat## no match

A smooth sea never made a skilled sailor


Acties:
  • 0 Henk 'm!

  • BlackHawkDesign
  • Registratie: Maart 2005
  • Laatst online: 20-09 15:40
Jawel hoor, je moet alleen die / aan het begin en eind weghalen in skinner. Dan krijg je gewoon matches. Volgens mij niet exact wat je wilt maar goed.

Maar je kan het toch ook anders oplossen door.
1. Trim functie eroverheen te gooien
2. Het resultaat te splitten met de split functie?

Dan kan je dus ook meer dan 3 items aan..

Succes!

[ Voor 20% gewijzigd door BlackHawkDesign op 24-10-2010 17:28 ]


Acties:
  • 0 Henk 'm!

Verwijderd

NMe schreef op zondag 24 oktober 2010 @ 17:02:
PHP:
1
$pattern = "/##(\w*?)((_(\d*))?_(\w*?))?##/";

:?

Gewoon meer groupen en wat vraagtekens toevoegen.
PHP:
1
$pattern = "/##(\w*?)(?:(?:_(\d*))?_(\w*?))?##/";

Non-capturing groups zijn in dit geval beter.

Acties:
  • 0 Henk 'm!

  • wboard
  • Registratie: Juli 2002
  • Laatst online: 04-04-2022

wboard

-=<wboard>=-

Topicstarter
BlackHawkDesign schreef op zondag 24 oktober 2010 @ 17:26:
Jawel hoor, je moet alleen die / aan het begin en eind weghalen in skinner. Dan krijg je gewoon matches. Volgens mij niet exact wat je wilt maar goed.

Maar je kan het toch ook anders oplossen door.
1. Trim functie eroverheen te gooien
2. Het resultaat te splitten met de split functie?

Dan kan je dus ook meer dan 3 items aan..

Succes!
Inderdaad, gewoon een eenvoudige expression en de rest opsplitsen in "_", som ben je echt te moeilijk aan het denken ... Thanks.
Verwijderd schreef op zondag 24 oktober 2010 @ 17:34:
[...]


PHP:
1
$pattern = "/##(\w*?)(?:(?:_(\d*))?_(\w*?))?##/";

Non-capturing groups zijn in dit geval beter.
Dit werkt ook, super! _/-\o_

A smooth sea never made a skilled sailor

Pagina: 1