2016-03-30 14 views
0

Ben bir dize vardır:Java'da normal ifadelerden özel karakterler nasıl açılır?

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 

ve bunu gibi görünecektir böylece diğer dizeleri ile ${..} alt dizeleri değiştirme çalışıyorum:

Patient: 
firstName lastName 

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

Ben examleString.replaceFirst çalışıyorum ((String) TestcaseContext.getCache(). get (matcher.group (1))) ve almak, index 1 \ $ {(. *?) \} –

+0

yakınındaki yasadışı tekrar [Bu] olabilir (http://stackoverflow.com/questions/10664434/escaping- özel karakterler-java-düzenli ifadeler) doğru yönde size rehberlik edecek? – cdp

+0

Normal ifadeler kullanmanız gerekir mi? Bunun için [Apache Commons Lang StrSubstitutor] (https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/text/StrSubstitutor.html) uygulama. Tam olarak istediğin şeyi yapar. – KevinO

cevap

2

Bir yakalama grubuyla bu normal ifadeler kullanabilirsiniz:

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); 

([^.}]+)} önce ve son DOT sonra yakalama grubunu olduğunu.

RegEx Demo

Çıktı: "{.? (*) \\} \\ $"

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

Teşekkür @anubhava, yakalama grubu hakkında bilmek güzel. Bu hile yaptı. –

0

Sen ${string.string.string VEYA } aramayı deneyin ve empty ile yerini alabilir string veya nothing bunu beğendi.

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

Değiştirme yapmalı: hiçbir şey veya boş dize ile değiştirin.

Regex101 Demo

İlgili konular