Ich versuche, eine Zeichenfolge mit Regular Expression zu analysieren. Ich habe einen Inhaltstext: Text und ich möchte den Inhalt von einer Schnur analysieren, die Text: Text hat. Code:Analysieren einer Zeichenfolge mit Regulärer Ausdruck in Java
String lines=" from:cal_date_d type:string relationship:many_to_one sql_on:${fact_customer.dw_update_date} = ${cal_date_d.dw_update_date}";
Pattern p = Pattern.compile("(\"?[\\w ]*)\\:(\"?([\\w]*)\"?)");
Matcher m = p.matcher(lines);
while(m.find()) {
String Column_Data=m.group(0);
System.out.println("Regex: "+Column_Data);
}
Ouput:
from:cal_date_d
type:string
relationship:many_to_one
sql_on:
Erwartete Ausgabe:
from:cal_date_d
type:string
relationship:many_to_one
sql_on:${fact_customer.dw_update_date} = ${cal_date_d.dw_update_date}
Das erste Problem ist, dass der Wert nicht nur Wort-Zeichen enthalten, sondern auch die Dollarzeichen, Klammern, das Gleichheitszeichen, Punkte und Leerzeichen. Das größere Problem besteht darin, dass Leerzeichen normalerweise Schlüssel: Wert-Paare trennen, aber innerhalb des Wertes "sql_on" enthalten sein können. Wie lautet die Syntax von 'sql_on'? Wird es immer eine enge Klammer und ein Gleichheitszeichen vor den inneren Räumen haben? Wird 'sql_on' immer erscheinen und zuletzt erscheinen? Sie brauchen einen anderen Aspekt, um sich darauf zu stützen oder einen anderen Ansatz zu wählen. –
für Sql_on Schlüssel, das Muster ist das gleiche und Standard die ganze Zeit – Navyah