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
Seite 1 von 1
Regex: Zeichen Aus Capturing-groups Ausschließen
Anzeige
#2
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
#3
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.
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
#4
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.
Naja, was solls... Ich muss ja nur die Anführungszeichen entfernen.
#5
geschrieben 09. Februar 2010 - 22:34
Ich habs hingekriegt mit Conditionals. Dafür musste ich zwar die Bibliothek wechseln, aber naja...
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)
^([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
Thema verteilen:
Seite 1 von 1