Ich habe eine SQL-Zeichenfolge Ich versuche, mit PHP preg_match_all
übereinstimmen und ich muss die Übereinstimmungen extrahieren. Es sieht wie folgt aus:Optional passende Untergruppe in Regex
A BUNCH OF MEANINGLESS SQL And (Condition1 = 'thisvalue*' Or Condition1 = '8504577' Or Condition1 = 'somethingelse123*') And MORE MEANINGLESS SQL
Ich möchte alle diese Condition1 = X
Teile greifen und sie in einem anderen Bereich verwendet werden, aber nur, wenn sie in Klammern in den größeren Unterbedingung sind und durch Or
s verbunden.
Meine Regex sieht wie folgt aus (https://www.regex101.com/r/gepdq9/3):
/(\((Condition1 = '[\dA-Za-z]+\*?'(\sOr\s)?)+\))/
Es entspricht dem größeren Unterbedingung richtig, aber aus irgendeinem Grund die matches[3]
Artikel, die ich denke, ist zu erfassen alle thisvalue*
, 8504577
und somethingelse123*
Werte, erfasst nur die letzte.
Wie kann ich alle diese Übereinstimmungen erfassen?
Meinten Sie [** '(: \ (| (\ A) \ G (Condition1 = ('(i) [[?!?: alnum:]] + (? - i) \ *? ') (Oder)?)) ** ** (https://www.regex101.com/r/jOmglQ/1)? – revo
@ revo-- das ist sehr gut, aber ich möchte auch die gesamte Unterabfrage erfassen, damit ich sie aus der ursprünglichen Abfrage entfernen kann. – user101289
Gesamte Übereinstimmung ist zugänglich durch '$ matches 0] 'während der Arbeit mit dem Ausgabe-Array von' preg_match_all' – revo