正規表現を使用して文字列を解析しようとしています。私はコンテンツテキストを持っています:テキストと私はテキストを持っている文字列から内容を解析したい:テキスト。 コード:正規表現を使用して文字列をパースする
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);
}
出力リレー:
from:cal_date_d
type:string
relationship:many_to_one
sql_on:
予想される出力:
from:cal_date_d
type:string
relationship:many_to_one
sql_on:${fact_customer.dw_update_date} = ${cal_date_d.dw_update_date}
このパターンを試してみてください。より大きな問題は、通常、スペースはキーと値のペアを分離するが、 'sql_on'値の中に入れることができるということである。 'sql_on'の構文は何ですか?それは内部のスペースの前に常に閉じ括弧と等号を持っていますか? 'sql_on'はいつも出現し、最後に現れますか?これをベースにするか、別のアプローチをとるような、他の側面も必要です。 –
Sql_onキーの場合、パターンは同じであり、常にデフォルトである – Navyah