2016-08-19 9 views
-1

Ich möchte Zeichenfolgen abfangen, die auf ein Muster in einer Betreff-Zeichenfolge reagieren.PCRE Regulärer Ausdruck: nur eine passende

Patterns Beispiele: ## Name ##, ## Adresse ##, ## Bankkonto ##, ...

Betreff Beispiel:

Dies ist die Vorlage mit Muster: ## Namen ##

Ihr Bankkonto ist: ## Bankkonto ##

Ihre   Adresse lautet: ## Adresse ##

 

Mit dem folgenden regulären Ausdruck: .*(#{2}[a-zA-Z]*#{2}).*, nur das letzte Muster abgestimmt ist.

Wie erfasst man alle Muster, nicht nur die letzten oder ersten?

+1

Entfernen Sie '. *' S: '# {2} [a-zA-Z] * # {2}' –

+0

Danke für Ihre Antwort, aber wenn ich diesen Teil entferne, wird nur das erste Muster gefunden – MoOwgly

+0

Es alles hängt davon ab, welche Sprache Sie verwenden und welche Methoden Sie wählen. Das obige Muster wird mit jeder Teilzeichenfolge innerhalb einer größeren Teilzeichenfolge so oft übereinstimmen, wie Sie benötigen, vorausgesetzt Sie verwenden geeignete Methoden. –

Antwort

0

Sie müssen .* entfernen, wie ich in meinem Kommentar erwähnt, und verwenden Sie preg_match_all:

$re = '~#{2}[a-zA-Z]*#{2}~'; 
preg_match_all($re, "##name##, ##address##, ##bankAccount##", $m); 
print_r($m); 

anzeigen PHP demo

Die .*#{2}[a-zA-Z]*#{2}.* abgestimmt 0 oder mehr Zeichen andere als eine neue Zeile auf den ersten, die Heimelf Ganze Zeile, und dann zurück bis zum letzten Auftreten von #{2}[a-zA-Z]*#{2} Muster, und die letzte .* nur griff den Rest der Linie. Durch Entfernen der .* und preg_match_all können alle Teilstrings extrahiert werden, die mit dem Muster #{2}[a-zA-Z]*#{2} übereinstimmen.

1

Jetzt, da ich Ihre Regex richtig formatiert habe, zeigt das Problem. Ein * in Ihrem Regex wurde ausgeblendet, da Markdown es nahm, um den Text kursiv zu machen.


Ihre Öffnung .* Streichhölzer gierig so viel wie möglich, die Sicherung nur bis genug (#{2}[a-zA-Z]*#{2}) Spiel zu lassen. Dies entspricht dem letzten Muster in der Linie, alles bevor es durch die .* gefunden wurde.

+0

Ok, ich weiß nicht, für Markdown, sorry. – MoOwgly

Verwandte Themen