Mit regex, match, mehrere durch Komma getrennte Worte
Ich bin auf der Suche nach der passenden regex-Muster, die ermöglicht es mir zu Holen, ganze Wörter entweder ab oder endet mit einem Komma, sondern lassen zahlen. Ich habe ([\w]+,)
welche Spiele das erste Wort, gefolgt von einem Komma, so in etwas wie:
rot,1 gelb,4
rot, passen, aber ich bin versucht, eine Lösung zu finden, die passen auf wie die folgenden:
rot, 1 ,gelb, 4
Ich habe nicht in der Lage, etwas zu finden, die Pause Saiten, wie diese, aber hoffentlich werden Sie in der Lage sein zu helfen!
InformationsquelleAutor user3153443 | 2016-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser regex
Passt 'Worte' Optional einschließen, die mit Kommas getrennt sind. Keine Leerzeichen zwischen den Kommas und 'Wort' sind erlaubt und die müssen Sie word starten mit einer alphanumerischen.
Sehen hier für eine demo.
Sich zu vergewissern, dass mindestens ein Komma übereinstimmt, verwenden Sie die Abwechslung syntax:
Leider keine regex-engine, ich bin mir bewusst, unterstützt kaskadierte passenden. Jedoch, da Sie in der Regel arbeiten mit regexen im Kontext von Entwicklungsumgebungen, könnten Sie wiederholt match gegen einen regex nehmen und dem übereinstimmenden Teilstring steht für weitere Treffer. Dies kann erreicht werden durch Verkettung oder iterierten Funktion Aufrufe mit speical-Trennzeichen chars (die garantiert nicht auftreten, in der test-strings).
Beispiel (Javascript):
In diesem Beispiel das (einfache) regex geprüft wird, für erste. Der Aufruf liefert eine Sequenz von vorläufigen Treffern delimted durch eckige Klammern. Spiele, die enthalten nicht die erforderlichen substring (
,
in diesem Fall) werden eliminiert, so wie alle dazwischen liegenden material.Diese Technik kann erzeugen Sie code, der leichter zu pflegen als eine komplizierte regex.
Jedoch, als eine Regel von Daumen, wenn deine regex kompliziert zu sein, einfach gepflegt, eine gute Vermutung ist, dass es noch nicht das richtige Werkzeug, in den ersten Platz (Viele Motoren bieten die
x
passenden modifier, können Sie einstreuen whitespace - nämlich die Zeilenumbrüche und Leerzeichen - und kommentiert wird).InformationsquelleAutor collapsar
Das Problem mit dem Ausdruck ist, dass:
-
\w
wird dies:[a-zA-Z0-9_]
. Dies beinhaltet die numerischen Daten, die Sie nicht wollen.- Sie haben das Komma am Ende, das match zu
foo,
aber nicht,foo
.Um dies zu beheben, können Sie etwas wie das tun:
(,\s*[a-z]+)|([a-z]+\s*,)
. Ein Beispiel ist hier.InformationsquelleAutor npinti