2009-05-26 13 views
0

Ich habe nie Regexes in meinem Leben verwendet und von jove sieht es aus wie ein tiefer Pool in tauchen. Wie auch immer, brauche ich einen regulären Ausdruck für dieses Muster (ein alphanumerischen ist (az oder 0-9), N numerisch ist (0-9) und A alphabetische (az)):Einfache Regex erforderlich

AN,AN,AN,AN,AN,N,N,N,N,N,N,AN,AN,AN,A,A 

, dass fünf am ist, gefolgt von sechs Ns, gefolgt von drei ANs, gefolgt von zwei A's. Wenn es einen Unterschied macht, verwende ich Java.

+0

Wenn Sie eine bestimmte Sprache verwenden, Sie sollten die Frage mit dieser Sprache versehen. –

+0

Kein Problem, ich werde für das nächste Mal wissen –

Antwort

7
[a-z0-9]{5}[0-9]{6}[a-z0-9]{3}[a-z]{2} 

sollten für die Aufgaben in den meisten RE Dialekte arbeiten, wie Sie es angegeben - die meisten von ihnen werden auch Abkürzungen wie \d (Ziffer) anstelle von [0-9] unterstützen (aber wenn alphabetics müssen Klein sein, wie Sie scheinen zu verlangen, müssen Sie wahrscheinlich die a-z Teile buchstabieren).

+0

Ich nehme an, du meinst [0-9], nicht [0-9]. Es wurde für dich behoben. –

+1

Das OP hat zu Beginn des Musters nach 5 alphanumerischen Zeichen gefragt, nicht nach {6} .. Sie sollten dies wahrscheinlich auf Korrektheit aktualisieren. So etwas ist näher an dem, um was das OP gebeten hat: [a-z0-9] {5} [0-9] {6} [a-z0-9] {3} [az] {2} –

4

Ersetzen Sie jedes AN durch [a-z0-9], jedes N durch [0-9] und jedes A durch [a-z].

+0

Das ist richtig (+1), aber die Regex ist schrecklich (-1). Alex Martellis Regex ist viel besser lesbar. –

+0

Genau, er hatte es praktisch selbst. – mmcdole

0

Versuchen an einigen einfachen Java-Regex-Tutorials suchen wie this

Sie werden Ihnen sagen, wie Sie reguläre Ausdrücke bilden und auch, wie es in Java zu verwenden.

1

30 Sekunden in Expresso:

[a-zA-Z0-9]{5}[0-9]{6}[a-zA-Z0-9]{3}[0-9]{2} 

Groß- und Kleinschreibung, aber Sie können wahrscheinlich, dass in Java anstelle der regulären Ausdruck definieren.

+0

Expresso ist groß! Ich stimme dem Vorschlag dieses Programms als eine großartige Möglichkeit, Regexes zu generieren und zu testen, sehr zu. – GreenKiwi

1

Für das von Ihnen gepostete Beispiel sollte folgendes funktionieren.

(([A-Za-z\d])*,){5}+(([\d])*,){6}+(([A-Za-z\d])*,){3}+([\d])*,[\d]* 

In Java sollten Sie in der Lage verwenden, es wie folgt aus:

boolean foundMatch = subjectString.matches("(([A-Za-z\\d])*,){5}+(([\\d])*,){6}+(([A-Za-z\\d])*,){3}+([\\d])*,[\\d]*"); 

I verwendet wird, dieses Tool in das Lernen RegEx zu helfen, ist es auch einfach, das wirklich machen. http://www.regexbuddy.com/

0

Dies sollte dem von Ihnen angeforderten Muster entsprechen.

[a-z0-9]{5}[0-9]{6}[a-z0-9]{3}[a-z]{2} 

Darüber hinaus erhalten Sie Anfang String/Ende der String hinzufügen könnte übereinstimmt, müssen, wenn Ihr String Match fehlschlagen, wenn andere Zeichen in ihm sind:

^[a-z0-9]{5}[0-9]{6}[a-z0-9]{3}[a-z]{2}$ 
Verwandte Themen