Hilfe bei Regular Expression

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/hilfe_bei_regular_expression_189028/page_1 - zur Vollversion wechseln!


grOOvekill@ schrieb am 11.12.2007 um 21:02

S'gott,

also ich versuch jetzt echt schon eine ganze Stunde eine Regular Expression zustande zu bringen und scheitere.

Ich bekomme in php anhand einer Schleife Datensätze ausgelesen, die sich in

Code: PHP
$dataset['bla']
befinden.

Nun möchte ich eben diese Datensätze darauf überprüfen, ob darin dieser String enthalten ist:

ma27zda

Das Problem dabei ist, das in diesem String die ersten zwei und die letzten drei Zeichen immer ma und zda (richtig, mazda) ergeben, sich dazwischen aber immer zwei oder dreistellige Zahlen befinden.

ma130zda
ma548zda
ma12zda
ma666zda

Nun wüßte ich gern, wie ich diesen String anhand Regular Expressions checken kann. Sprich: Sind die ersten zwei Zeichen "ma" und die letzten drei zeichen "zda"?

Ich krieg's einfach nicht hin. Kann mir da mal jemand aushelfen?

tia!


murcielago schrieb am 11.12.2007 um 21:09

die regex sollte sein:

Code: PHP
^[m][a][0-9]*[z][d][a]$


grOOvekill@ schrieb am 11.12.2007 um 21:19

Öhm.. und welche Funktion verwende ich nun am sinnvollsten dafür? Ich will ja eigentlich nur wissen ob "ma*zda" dasteht, mehr nicht. Was wär denn da am geschicktesten?

edit:

Okay, ich hab's mal damit versucht:

Code: PHP
if(preg_match('^[m][a][0-9]*[z][d][a]$', $dataset['bla'])) {

Damit haut's hin. Theme erledigt. :)

Danke für die regex!


Luzandro schrieb am 11.12.2007 um 22:15

Zitat von murcielago
die regex sollte sein:

Code: PHP
^[m][a][0-9]*[z][d][a]$

Gibts hier irgendeinen Grund für die eckigen Klammern? Die sollten ja nur für "ein Zeichen daraus" stehen, macht also bei einem einzelnen Zeichen nicht viel Sinn

Code: PHP
'/^ma\\d{2,3}zda$/'


murcielago schrieb am 11.12.2007 um 22:16

jo, heute is scho spät, außerdem hab ich da glaub ich keine php gültige syntax angegeben. mach das nur unter c++...


gue schrieb am 12.12.2007 um 08:47

Zitat von grOOvekill@
Nun möchte ich eben diese Datensätze darauf überprüfen, ob darin dieser String enthalten ist:

ma27zda
Code:
if ($dataset['bla'] == "ma27zda") ...
? :D

Ansonsten kann und sollte man sowas eigentlich mit string funktionen á la substr lösen ;)


murcielago schrieb am 12.12.2007 um 10:42

lest ihr alle seine anforderung nicht?

da kann ma27zda, ma811zda, ma3zda usw usw stehn...

also, @groove:

Code: PHP
^ma[0-9]*zda$
geht genauso


d3cod3 schrieb am 12.12.2007 um 10:48

* steht aber nicht für 2 oder 3? da geb ich eher dem luzandro mit {2,3} recht


murcielago schrieb am 12.12.2007 um 10:53

@d3cod3

ah, seh schon. kenn mich mit der regex syntax die luzandro angeben hat, nicht so aus. aber schaut gut aus ja, bei meiner lösung können halt beliebig viele zahlen dazwischen stehen.


Lizardking schrieb am 12.12.2007 um 11:01

// Alternativlösung

function checkMazda($string) {
if(substr($string,0,2) == 'ma' && substr($string,strlen($string)-2,3) == 'zda') return true;
return false;
}

// Überprüft jetzt natürlich nicht, ob bzw. wieviele zeichen sich dazwischen befinden,
// war ja auch nicht gefordert (könnte aber leicht hnzugefürgt werden)


murcielago schrieb am 12.12.2007 um 11:56

Zitat von Lizardking
// Alternativlösung

function checkMazda($string) {
if(substr($string,0,2) == 'ma' && substr($string,strlen($string)-2,3) == 'zda') return true;
return false;
}

// Überprüft jetzt natürlich nicht, ob bzw. wieviele zeichen sich dazwischen befinden,
// war ja auch nicht gefordert (könnte aber leicht hnzugefürgt werden)

is aber wohl schiach :D


kleinerChemiker schrieb am 12.12.2007 um 16:13

aber uu schneller *gg*


murcielago schrieb am 12.12.2007 um 16:15

Zitat von kleinerChemiker
aber uu schneller *gg*

DAS kann ich mir ned wirklich vorstellen.


kleinerChemiker schrieb am 12.12.2007 um 17:21

substring() ist wohl schneller als preg_match()




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026