romy: reg. Ex. Sonderzeichen zulassen

Hi,

ich würde gern ein Wort prüfen, welches verschiedenen Kriterien unterliegt. Unteranderem sollte ein Sonderzeichen drinvorkommen: ich habe die Prüfung darauf bisher so probiert:

!(.*)[\041-\057][\072-\100][\133-\140]\173-\176!
so ist es aber falsch, weil als Fehlermeldung kommt,dass der Bindestrich fehlerhaft sei. Ich habe keine Variante gefunden, wie man die Oktalzahlen verbindet bzw. überhaupt schon ein Flag für Sonderzeichen.

danke für Eure Hilfe
ciao
romy

  1. hi,

    wenn du zeichen, die innerhalb des regulären ausdrucks eine sonderbedeutung haben, als "normale" zeichen verwenden willst, dann musst du sie mit einem vorgstellten backslash maskieren, wie sonst in php auch.

    gruss,
    wahsaga

    1. Hi,

      wenn du zeichen, die innerhalb des regulären ausdrucks eine sonderbedeutung haben, als "normale" zeichen verwenden willst, dann musst du sie mit einem vorgstellten backslash maskieren, wie sonst in php auch.

      ja natürlich, aber es soll der Bindestrich ja als Bindestrich benutzt werden, eben um die Zwischenräume zu kennzeichnen. Vielleicht muss man ja bei oktalen Räumen ein anderes Zeichen benutzen , habe aber nichts gefunden.

      ???

      ciao
      romy

      1. hi,

        ja natürlich, aber es soll der Bindestrich ja als Bindestrich benutzt werden, eben um die Zwischenräume zu kennzeichnen. Vielleicht muss man ja bei oktalen Räumen ein anderes Zeichen benutzen , habe aber nichts gefunden.

        soll der bindestrich jetzt ein sonderzeichen sein oder nicht?

        aber ich glaube, dein problem liegt woanders - reguläre ausdrücke "rechnen" nicht mit zahlen.

        du willst eine bedingung formulieren wie >= 041 und <= 057 - aber ich denke mal, das geht so nicht.

        reguläre ausdrücke arbeiten AFAIK zeichenbasiert, aber sie "vergleichen" keine zahlen.

        gruss,
        wahsaga

        1. Hi,

          soll der bindestrich jetzt ein sonderzeichen sein oder nicht?

          er soll kein Sonderzeichen sein, sondern das aussagen, was auch bei [a-z] passiert, nämlich das alle Zeichen von a bis z erlaubt sind

          jetzt soll aber nicht a-z erlaubt sein, sondern !"§$%&/()= zB.
          diese Zeichen kann man oktal ausdrücken (wenn ich alle Sonderzeichen einzeln auflisten müsste wären es zu viele)

          --> daraus folgt bei mir [\040-\050] sollte die Zeichen \040 bis \050 berücksichtigen

          aber es kommt stattdessen ein Fehler, das - kein gültiger Modifier ist!?

          reguläre ausdrücke arbeiten AFAIK zeichenbasiert, aber sie "vergleichen" keine zahlen.

          ?

          danke
          ciao
          romy

          1. hi,

            soll der bindestrich jetzt ein sonderzeichen sein oder nicht?
            er soll kein Sonderzeichen sein, sondern das aussagen, was auch bei [a-z] passiert, nämlich das alle Zeichen von a bis z erlaubt sind

            also soll es _doch_ ein sonderzeichen sein - ein zeichen mit der besonderen bedeutung "von - bis" eben!

            gruss,
            wahsaga

            1. Hi,

              also soll es _doch_ ein sonderzeichen sein - ein zeichen mit der besonderen bedeutung "von - bis" eben!

              nennt man das Sonderzeichen? Jedenfalls stimmt aber Deine erste Aussage nicht, das man es dann maskieren müsse, denn ich maskiere zeichen, welche eine Bedeutung haben, welche ich im Moment nicht haben möchte. z.B. wenn ich nach einem Backslash suche.

              Letztendlich einige ich mich auch darauf, das es Sonderzeichen heisst, aber das Problem an sich ist damit nicht gelöst!?

              Was macht man da, Google ist irgendwie zäh bei der Sache.

              ciao
              romy

              1. hi,

                also soll es _doch_ ein sonderzeichen sein - ein zeichen mit der besonderen bedeutung "von - bis" eben!
                nennt man das Sonderzeichen?

                ja, tut man.

                Jedenfalls stimmt aber Deine erste Aussage nicht, das man es dann maskieren müsse, denn ich maskiere zeichen, welche eine Bedeutung haben, welche ich im Moment nicht haben möchte. z.B. wenn ich nach einem Backslash suche.

                meine aussage stimmt.

                ein sonderzeichen (wie z.b. der backslash) hat eine besondere bedeutung. wenn du aber wirklich nach einem backslash suchen möchtest, heisst dies ja gerade, dass du ihn eben nicht als sonder-, sondern als normales zeichen behandeln willst.

                deshalb maskierst du das sonderzeichen durch einen vorgestellten backslash (ergibt in diesem falle also \ ), um ihm seine sonderbedeutung an dieser stelle zu nehmen.

                gruss,
                wahsaga

                1. Hi,

                  deshalb maskierst du das sonderzeichen durch einen vorgestellten backslash (ergibt in diesem falle also \ ), um ihm seine sonderbedeutung an dieser stelle zu nehmen.

                  ich will dem Bindestrich nicht seine Sonderbedeutung nehmen, er soll als Bindestrich fungieren, dass habe ich mittlerweile aber echt mehrmals gesagt. (Nimms mir nicht übel)
                  ich möchte errreichen, dass er sich wie bei [a-z] verhält, halt nur bei oktalen Zeichen: \040-\050
                  Aber in dieser Schreibweise, wird mir gesagt, das der Modifier - nicht bekannt wäre.

                  im übrigen: wenn ich diesen Bindestrich excape, was ja eigentlich keinen Sinn macht, bekomme ich den gleichen Fehler, nur jetzt mit dem Backslash...

                  danke, echt, aber bisher sind wir trotzdem noch nicht wirklich vorwärts gekommen.

                  ciao
                  romy

                  1. Hi,

                    in der Doku ist sogar ein Beispiel [\000-\037]
                    aber selbst dieses bringt bei mir ein: unknown modifier -

                    Warum? Es gibt doch bestimmt eine Möglichkeit dafür.

                    ciao
                    romy