2016-03-30 8 views
0

Ich habe eine Zeichenfolge:Wie fange ich Sonderzeichen in einem Regex-Muster in Java?

Patient: 
${ss.patient.howard.firstName} ${ss.patient.howard.lastName} 
Gender: ${ss.patient.howard.sex} 
Birthdate: ${ss.patient.howard.dob} 
${ss.patient.howard.addressLine1} 
Phone: (801)546-4765 

und ich versuche ${..} Substrings mit anderen Saiten zu ersetzen, so dass es aussehen würde:

Patient: 
firstName lastName 

Gender:sex 
Birthdate: dob 
addressLine1 
Phone: (801)546-4765 
+0

ich examleString.replaceFirst versuche ((String) TestcaseContext.getCache(). get (matcher.group (1))) und bekommen, Illegale Wiederholung in der Nähe von Index 1 \ $ {(. *?) \} –

+0

möglicherweise [Dies] (http://stackoverflow.com/questions/10664434/escaping- Sonderzeichen-in-Java-Regular-Ausdrücke) werden Sie in die richtige Richtung führen? – cdp

+0

Müssen Sie reguläre Ausdrücke verwenden? Ich würde das [Apache Commons Lang StrSubstitutor] (https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/text/StrSubstitututor.html) für dieses spezielle betrachten Anwendung. Es macht genau das, was du willst. – KevinO

Antwort

2

Sie können diese Regex mit einer Erfassungsgruppe verwenden:

String myString = "Patient:\n${ss.patient.howard.firstName} ${ss.patient.howard.lastName}\nGender: ${ss.patient.howard.sex}\nBirthdate: ${ss.patient.howard.dob}\n${ss.patient.howard.addressLine1}\nPhone: (801)546-4765"; 
myString = myString.replaceAll("\\$\\{[^}]+?\\.([^.}]+)}", "$1"); 

System.err.println(myString); 

([^.}]+) ist die Erfassungsgruppe vor } und nach dem letzten Punkt.

RegEx Demo

Ausgang: "{.? (*) \\} \\ $"

Patient: 
firstName lastName 
Gender: sex 
Birthdate: dob 
addressLine1 
Phone: (801)546-4765 
+1

Danke @anubhava, gut über die einfangende Gruppe zu wissen. Es hat den Trick gemacht. –

0

Sie könnten versuchen, für ${string.string.string OR } Suchen und Ersetzen mit empty String oder nothing so.

Regex:\${[a-z]+\.[a-z]+\.[a-z]+\.|}

Ersatz zu tun: Ersetzen durch nichts oder leere Zeichenkette.

Regex101 Demo

Verwandte Themen