2016-08-24 15 views
1

Javaコードで正規表現を使用して動的に文字列を置き換え私はJavaコードで以下のように解決したい

文字列inputstrに=「これは私の好きな文字列を変換するサンプル@ hostname1 @ hostの-name2のです:@Testの宿主 - @ test1は、ドルを続けて中かっこ、文字列、中かっこで囲む形式です。私は

出力として必要

出力文字列:「これは私の好きな文字列を変換したいサンプル$ {hostname1} $ {ホスト名2}です:$ {テスト}ホスト - $ {TEST1}へ形式(すなわち、ドルの後に中かっこ、文字列、および閉じ括弧が続く形式)。

私は

public void regEx(String intputStr){ 
     String pattern = "\\S(@)\\S+"; 
     Pattern r = Pattern.compile(pattern); 
     Matcher m = r.matcher(commands); 

     String replacePattern = " \\$\\{\\S+\\} "; 
     int i=0; 

     while(m.find()) { 
      Pattern.compile(pattern).matcher(intputStr).replaceAll(replacePattern); 
      // System.out.println(m.group(i)); 
      //i++; 
     } 
     // System.out.println(i); 
     System.out.println(intputStr); 
    } 

のように下にしようとしたしかし、私は進むことができ、例外なくを取得します。助けてください。

答えて

0

あなたは、次のワンライナーで逃げることができます。

inputStr = inputStr.replaceAll("@(.*?)\\s", "\\${$1} "); 

これは、シンボルと最も近いスペースで間のすべてのものをキャプチャする正規表現@(.*?)\\sを、一致する、としたい書式設定に置き換えます。

String inputStr = "This is a sample @hostname1 @host-name2 where I want to convert the string like :@test [email protected] to format i.e dollar followed by open braces, string and close braces."; 
// add space to match term should it occur as the last word 
inputStr += " "; 
inputStr = inputStr.replaceAll("@(.*?)\\s", "\\${$1} "); 
inputStr = inputStr.substring(0, inputStr.length()-1); 

System.out.println(inputStr); 

出力:

This is a sample ${hostname1} ${host-name2} where I want to convert the string like :${test} host-${test1} to format i.e dollar followed by open braces, string and close braces. 
+0

これはとてもbriiliantです。あなたのソリューションに感謝します。 –

関連する問題