WinFuture-Forum.de: Regex: Zeichen Aus Capturing-groups Ausschließen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Regex: Zeichen Aus Capturing-groups Ausschließen


#1 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 08. Februar 2010 - 17:04

Hallo,

vielleicht kann mir hier einer auf die Sprünge helfen.

Ich möchte mit nur einer Regex sowohl Zahlen matchen, als auch Strings, die dann aber in Anführungszeichen stehen müssen. Dabei sollen die Matches in nur einer Capturing Group stehen, egal ob Zahl oder String gematcht wurde. Außerdem sollen die Anführungszeichen bei Strings nicht mitgematcht werden.
Letzteres ist das Problem meiner momentanten Regex: (\d+|(?:".+"))

Kann mir jemand sagen, wie man die Anführungszeichen ausschließen kann?

Danke
0

Anzeige



#2 Mitglied ist offline   mush 

  • Gruppe: aktive Mitglieder
  • Beiträge: 895
  • Beigetreten: 29. Mai 07
  • Reputation: 7

geschrieben 08. Februar 2010 - 19:01

Müsste so gehen (ungtestet):
CODE
(\d+)|(?:")(.*?)(?:")

Dieser Beitrag wurde von mush bearbeitet: 08. Februar 2010 - 19:01

insane in the membrane
0

#3 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 09. Februar 2010 - 01:02

Hm, da hast du jetzt aber auch zwei Capturing Groups. Ich hätte das gerne in einer, so dass ich einfach per Backreference ohne Weiteres den Inhalt abfragen kann.

Wer noch Lust hat zu basteln, findet hier einen Validator zum Überprüfen. :)

Dieser Beitrag wurde von Der Kenner bearbeitet: 09. Februar 2010 - 01:03

0

#4 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 09. Februar 2010 - 17:01

Es scheint so, als ob das nicht möglich wäre: http://stackoverflow.com/questions/277547/...n-capture-group
Naja, was solls... Ich muss ja nur die Anführungszeichen entfernen.
0

#5 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 09. Februar 2010 - 22:34

Ich habs hingekriegt mit Conditionals. Dafür musste ich zwar die Bibliothek wechseln, aber naja...

^([a-zA-Z]\w*)\s*(==|!=|<|>|<=|>=|(?(?=~\s*(?:(?:\\")|').*)~))\s*(?:\d+|(\\"|'))(.*?)(?(3)\3)\s*(?:((?:\|\|)|(?:&&))\s*([a-zA-Z]\w*)\s*(==|!=|<|>|<=|>=|(?(?=~\s*(?:(?:\\")|').*)~))\s*(?:\d+|(\\"|'))(.*?)(?(8)\8)\s*)*


:)

Noch ein Tipp: http://regex.larsolavtorvik.com/ PHP-Tester können auch Conditionals und unterstützen verhältnismäßig viele Features (http://en.wikipedia.org/wiki/Comparison_of...ression_engines)

Dieser Beitrag wurde von Der Kenner bearbeitet: 09. Februar 2010 - 22:36

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0