Ankündigung

Einklappen
Keine Ankündigung bisher.

[REGEX] domain mit und ohne www. erkennen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [REGEX] domain mit und ohne www. erkennen

    kennst ihr euch gut mit regex aus?
    komm nicht weiter
    http\:\/\/www.\.?(.*)\. usw möchte ne domain erkennen mit und ohne den www. teil.

    [w]+?\.? zb für mit und ohne www. funzt nicht

  • #2
    (www\.)?

    Such dir ueber Google lieber einen fertigen, funktionierenden RegExp fuer deine URLs. Der kann evtl. sehr lang sein.

    Kommentar


    • #3
      brauche ja nur den www. teil
      habe bestimmt mind eine stunde nach dem regex für ganze urls gesucht aber nicht gefunden, da es bei php dafür ne eigene funktion gibt.. jedoch ist die nix für mich da ich sie nicht benutzen kann(habe vbulletin, in einem MOD wird das regex benötigt).

      Kommentar


      • #4
        Ist doch nichts PHP-spezifisches...

        Hier ist garnichts?
        http://www.google.de/search?sourceid...8&q=regexp+url

        Kommentar


        • #5
          danke so funzt es: (www\.)?
          jedoch habe ich bei diesem speziellen fall ein problem mit den klammern.

          Code:
          http\:\/\/(www\.)?(.*)\..*\/.*
          <--- so sieht der halbe regex aus

          wegen den klammer hat www. den parameter $p1 (falls die domain www. hat)
          und der domainname (.*) $p2
          jedoch muss der domain name den parameter $p1 haben.
          umcoden kann ich den mod dafür nicht.

          gibt es eine andere möglichkeit ohne klammern?
          ja die schienen mir falsch, da der www abfrage teil fehlte

          Kommentar


          • #6
            Falls ich das richtig verstanden habe, suchst du:

            Code:
            (?:www\.)?    <- non-capturing subpattern
            - http://www.php.net/manual/en/regexp....ubpatterns.php

            Kommentar


            • #7
              Zitat von mermshaus Beitrag anzeigen
              Falls ich das richtig verstanden habe, suchst du:

              Code:
              (?:www\.)?    <- non-capturing subpattern
              - http://www.php.net/manual/en/regexp....ubpatterns.php
              jap richtig so ist es danke sehr an euch

              Kommentar


              • #8
                sorry das ich nochmal nachfragen muss. komm wieder nicht weiter mit regex an der letzten stelle.


                falls dieser teil: \?http\:
                in einer URL ist soll sie nicht vom regex erkannt werden.

                lösungsansatz war:

                [^\?http\:]

                funktioniert leider nicht. warum?

                Kommentar


                • #9
                  [ ... ] ist eine Charakterklasse, das heißt eine ODER-verknüpfte Liste von Zeichen. [^\?http\:] würde bedeuten "ein Zeichen, das nicht (h,t,p,?, ist". Was du brauchst, wäre wohl eine negative look-behind Assertion.

                  Der Ausdruck...

                  Code:
                  (?<!\?)http://(?:www\.)?\S+
                  ...matcht...

                  Code:
                  http://www.example.org/
                  http://example.org/
                  aber nicht...

                  Code:
                  ?http://example.org/
                  - http://www.php.net/manual/en/regexp....er-classes.php
                  - http://www.php.net/manual/en/regexp....assertions.php

                  Edit: Das \S+ habe ich gesetzt, um den Ausdruck abzukürzen. Hier würde es wohl effektiv die Prüfung auf "www." überflüssig machen. Wenn du "www." abfragen willst, muss der Gesamtausdruck ab dort anders aussehen.

                  Kommentar


                  • #10
                    Das meinte ich nicht ganz so.
                    ist eigentlich etwas einfaches aber ich kriegs nicht hin :/

                    beispiel:

                    Matches:
                    not Matches:
                    brauche nur diesen mittleren teil auszuschließen.
                    also wenn in der URL noch 1 http:// folgt.

                    so funzt es nicht:
                    Code:
                    (?<!\:)

                    Kommentar


                    • #11
                      Das ist aber auch nicht unbedingt eine gültige URL.

                      Kommentar


                      • #12
                        ich weiß sieht komisch aus deswegen soll sie ja NOT match aus bestimmten gründen.
                        ist für einen mod bei vbulletin alles, brauche diese regex so.

                        Kommentar


                        • #13
                          Es wäre einfacher, die ungewollten "URLs" erstmal mitzumatchen und dann mit substr_count oder so zu prüfen, ob mehr als ein http:// im Match vorhanden ist.

                          Regulärer Ausdruck:

                          Code:
                          (?:(?<=\s)|(?<=^))http://(?:\S(?!http://))+(?:(?=\s)|(?=$))
                          (?:\S(?!http://))+ meint "ein oder mehrere Nicht-Whitespace-Zeichen, auf die je nicht 'http://' folgt".

                          Das Pattern muss verankert werden, sonst würde hier die erste Hälfte gematcht:

                          Code:
                          http://www.example.com/sdadas?http://example.com/sdadas
                          Ich habe es mit Whitespace (bzw. Eingabeanfang/-ende) verankert. Das heißt, jedes Match muss von Whitespace umschlossen sein. Je nachdem, was du da parst, wären vielleicht zusätzlich zum Beispiel Anführungszeichen sinnvoll.

                          Code:
                          (?:(?<=[\s"])|(?<=^))http://(?:[^\s"](?!http://))+(?:(?=[\s"])|(?=$))
                          Edit: Testcase als Kopiervorlage, falls da noch 'ne Folgefrage kommt, wovon ich mal ausgehe.

                          Code:
                          http://www.example.com/sdadas
                          
                          http://www.example.com/sdadas?http://example.com/sdadas
                          http://www.example.com/sdadashttp://example.com/sdadas http://example2.com/dasdasdasd
                          
                          http://example2.com/dasdasdasd
                          
                          "http://example2.com/dasdasdasd"http://example2.com/dasdasdasd

                          Kommentar


                          • #14
                            komisch.
                            eingentlich was sehr einfaches im prinzip will nicht funktionieren

                            hier am besten mein beispiel:

                            Code:
                            (http)\:\/\/(?:www\.)?((example1)|(example2)|(example3)).*\/.*
                            habe jetzt u.a diese möglichkeit von dir empfohlen ausprobiert , aber leider nicht erfolgreich:

                            Code:
                            (http)\:\/\/(?:www\.)?((example1)|(example2)|(example3)).*\/.*(?:\S(?!http://))+

                            Kommentar


                            • #15
                              Code:
                              (?:(?<=[\s"])|(?<=^))http://(?:www\.)?(?:example|example2|example3)(?:[^\s"](?!http://))+(?:(?=[\s"])|(?=$))
                              Code:
                              http://www.example.com/sdadas
                              
                              http://test.org/
                              
                              http://www.example.com/sdadas?http://example.com/sdadas
                              http://www.example.com/sdadashttp://example.com/sdadas http://example2.com/dasdasdasd
                              
                              http://example2.com/dasdasdasd
                              
                              xyz http://example3.org/
                              http://example3.org/http://example3.org/
                              
                              "http://example2.com/dasdasdasd"http://example2.com/dasdasdasd
                              Falls du die Sache mit dem Slash einbauen willst (die konnte ich mir nicht zusammenreimen), bedenke, dass Ausdrücke standardmäßig "greedy" sind.

                              Code:
                              a.*b
                              matcht

                              Code:
                              a xxxx b xxxx b
                              nicht lediglich

                              Code:
                              a xxxx b xxxx b
                              - http://www.regular-expressions.info/repeat.html

                              Kommentar

                              Lädt...
                              X