2016-04-15 15 views
0

Ich brauche zwei verschiedene reguläre Ausdrücke für die unten genannten Zeichenfolge Werte;Regex für Java-String, um zwischen zwei verschiedenen Strings mit dynamischen Zeichen zu unterscheiden

Quelle Text 1: user.tag.<TAG>.<TAGVALUE>

Quelle Text 2: user.tag.<TAG>

Ein einfacher regulärer Ausdruck sollte eindeutig die beiden oben genannten Strings identifizieren. Aber es sollte keine Überschneidungen geben. Der Wert zwischen <> ist dynamisch. Die dynamischen Werte können alles sein (einschließlich Leerzeichen) außer . Zeichen.

Allerdings habe ich die folgenden regex Bedingungen

RegEx für String 1: (\Quser.tag\E)\.(\w+)\.(\w+)(.*)

RegEx für String 2: (\Quser.tag\E)\.(\w+)\.(.*)

Die Regex für String 2 wird auch für die first source string entsprechen. Ich möchte nicht, dass das passiert und ich möchte, dass sie einzigartig sind.

+0

Vielleicht '^ (\\ Quser.tag \\ E) [.] <(\\w+)> $'? und '^ (\\ Quser.tag \\ E) [.] <(\\w+)> [.] <(\w+)> $'? –

+0

Ja, diese '.' sollten auf jeden Fall mit – Aaron

+0

auskommentieren. Seien Sie vorsichtig mit Ihren' .' Zeichen. Sie müssen ihnen als '\.' Entkommen, wenn Sie ein Literal '. Warum haben Sie auch das '(. *)' Am Ende Ihrer Regexes? Dadurch wird "alles" gefunden, was die Ursache für die unerwünschte Übereinstimmung ist. Bitte geben Sie Textproben an und wie sie übereinstimmen sollten (oder nicht sollten). – Lucero

Antwort

0

Basierend auf Ihrem Beispiel, verwenden Sie die folgenden regulären Ausdrücke:

^user\.tag\.([^.]+)\.([^.]+)$ 

^user\.tag\.([^.]+)$ 

Beachten Sie, dass \Q..\E is buggy in einigen älteren Java-Versionen und es ist am besten, es deshalb zu vermeiden.

+0

Dies ist fast nah an dem, was ich gefragt habe, aber '\ w' beschränkt mich darauf, nur Wörter und Zahlen zu verwenden. Die dynamischen Werte können alles (einschließlich Leerzeichen) außer "." Sein. – stangada

+0

@stangada Okay, habe den Teil nicht registriert, dass die dynamischen Werte irgendetwas sein können, mein Schlechter. Siehe meine Bearbeitung, die dies berücksichtigt. – Lucero

+0

Das funktioniert perfekt. Danke @Lucero – stangada

Verwandte Themen