[GELÖST] REGEX() - Kriege "keine" funktionierenden regulären Ausdrücke hin...

hurricane

Neuer User
Mitglied seit
30 Mrz 2005
Beiträge
53
Punkte für Reaktionen
0
Punkte
0
Hallo @all,

ich möchte in meinem Wählplan gerne die Funktion REGEX() nutzen und schaffe es nicht einen funktionierenden regulären Ausdruck zu formulieren. Ich nutze schon extra eine Variable für den Ausdruck, damit Asterisk mit speziellen Zeichen keine Probleme hat.

Folgende absolut einfache Ausdrücke funktionieren sogar... ;)

"." >> leerer oder voller String
"[abc0-9]" >> bei "b4" = ok, bei e6 = nicht ok

Jetzt (auch ansich sehr einfache) Beispiele welche nicht klappen wollen...

"9{2}"
"^0049"

Meine eigentliche Zielsetzung ist es herauszufinden, ob am Anfang des zu vergleichenden Strings "+49", "0049" bzw. "49" steht ["natürlich" drei getrennte REGEX()].

Kann mir jemand sagen was ich falsch mache oder hat ggf. sogar jemand für meine drei Zielsetzungen funktionierende Ansätze?


Viele Grüße

Hurri


PS: Asterisk 1.4.1
 
Zuletzt bearbeitet:
Hallo hurricane,

es wäre hilfreich, wenn du mal eine Zeile (aus der extensions.conf nehme ich an) hinschreiben würdest, wie sie bei dir nicht funktioniert.

Das sind meine Ergebnisse mit einem Testeintrag:

Code:
exten => 1,n,Set(v1=491512345)
exten => 1,n,Set(v2=+491512345)
exten => 1,n,Verbose(${REGEX("^0049" 0048)}) ; = 0 in der Logdatei
exten => 1,n,Verbose(${REGEX("^0049" 0049)}) ; = 1
exten => 1,n,Verbose(${REGEX("^49" 0049)}) ; = 0
exten => 1,n,Verbose(${REGEX("^49" 49)}) ; = 1
exten => 1,n,Verbose(${REGEX("^[+]49" 49)}) ; = 0
exten => 1,n,Verbose(${REGEX("^[+]49" +49)}) = 1
exten => 1,n,Verbose(${REGEX("^[+]49" ${v1})}) ; = 0
exten => 1,n,Verbose(${REGEX("^[+]49" ${v2})}) ; = 1
 
@OttTheTormentor

Allerbesten Dank für Deine Mühen, dank Deiner Zeilen habe ich nun alles zum laufen bekommen, obwohl ich die Funktionssweise noch nicht im Grundsatz voll nachvollziehen kann.

"." << Funktioniert und verstehe ich auch
"49" << Funktioniert und verstehe ich auch
"[abc0-9]" << Funktioniert und verstehe ich auch

"^[+]49" << Funktioniert, aber verstehe ich nicht ganz, denn ansich sollte es doch "^\+49" heißen, oder?

"9{2}" (789789 = 1, 789 = 0) << Funktioniert nicht!?
"789$" (6789 = 1, 7899 = 0) << Funktioniert nicht!?


Quelle: http://www.php-resource.de/...


Grüße

Hurri
 
Hallo hurricane,

"^[+]49" << Funktioniert, aber verstehe ich nicht ganz, denn ansich sollte es doch "^\+49" heißen, oder?
Nein, bei mir funktionieren "^+49" oder "^\+49" nicht.

"9{2}" (789789 = 1, 789 = 0) << Funktioniert nicht!?
Auch das sieht bei mir anders aus:
Code:
exten => 1,n,Verbose(${REGEX("9{2}" 789789)}) ; = 0
exten => 1,n,Verbose(${REGEX("9{2}" 789)}) ; = 0
exten => 1,n,Verbose(${REGEX("9{2}" 78990)}) ; = 1

Das {2} bedeutet 2 gleiche Zeichen direkt hintereinander.

"789$" (6789 = 1, 7899 = 0) << Funktioniert nicht!?
"789$" meint wirklich direkt am Ende, im zweiten Fall ist vorm Ende aber noch eine weitere 9.

Die php-Regex gelten nicht unbedingt für asterisk. Meine Referenzen dazu sind:

http://www.voip-info.org/wiki/index.php?page=Asterisk+func+regex

und von dort aus dann:

http://www.grymoire.com/Unix/Regular.html
 
Kostenlos!

Statistik des Forums

Themen
248,916
Beiträge
2,304,972
Mitglieder
378,628
Neuestes Mitglied
Apfelbaum94