2017-01-22 8 views
-1

ファイルを解析していて、CSVに,で区切られた行文字列を書きます。データ内のCSV形式のデータ文字列と一致するRegexヘルプ

84330CAX4mPWy2016112903,CAX4mPWy,2016-11-29-14.07.07.000000,CAD,$55,000.00,somename 
                   ^

時々金額が1000未満であるので、,は発生しませんが、:私の問題は、同じ行の文字列も,

例で区切られており、その中に通貨を持っているということです時にはその高い。

私はそれが$を見つけて$の前に複数の\dがある場合,を置き換え、正規表現を考えていましたか?

+0

置き換え ''何で?。また、あなたが試したことを私たちに示してください – TheLostMind

+0

それを書き込もうとする!あなたが失敗した場合、私たちは喜んで助けてくれるでしょう – nhouser9

+4

あなたのCSVは単に形式が正しくありません。区切り文字が含まれている場合は、値を引用符で囲む必要があります。あなたはCSVをどのように生成していても、これを修正する必要があります。 – jonrsharpe

答えて

1

利用肯定先読み:

私はグループの値でしょう。 これはあなたのために動作します:

public static void main(String[] args){ 
    String s = "84330CAX4mPWy2016112903,CAX4mPWy,2016-11-29-14.07.07.000000,CAD,$55,000.00,somename"; 
    System.out.println(s.replaceAll("(\\D\\d+),(?=\\d+)", "$1")); 
} 

O/P:

84330CAX4mPWy2016112903,CAX4mPWy,2016-11-29-14.07.07.000000,CAD,$55000.00,somename 
+0

これは私が探していたものです。ありがとうございました。私は$ 1と一致する出現を調べなければならない。もし私ができるならば、親指は上がるだろう。 –

+0

@TaranjitKangあなたはアップヴォートすることはできませんが、あなたが探しているものなら、あなたは[この答えを受け入れる]ことができます(http://stackoverflow.com/help/someone-answers)。 –

0

これを行う方法は、必要に応じて異なります。 1非数字が付け加え1つの以上の数字、1桁以上の数字とカンマのため

private static final String STRING_TO_PARSE = "84330CAX4mPWy2016112903,CAX4mPWy,2016-11-29-14.07.07.000000,CAD,$55,000.00,somename"; 
public static void main(String[] args) { 
    Matcher matcher = Pattern.compile("(.+),(.+),(.+),(.+),(\\$[\\d,]+\\.\\d\\d),(.+)").matcher(STRING_TO_PARSE); 
    matcher.find(); 
    for (int i = 1; i <= matcher.groupCount(); i++) { 
     System.out.println(matcher.group(i)); 
    } 
} 
+0

私はそれを試してみるでしょう。 "$"内の "、"を除いて、全体の行の文字列はほとんどありません。 –

+0

ちょっとありがとう、私はこれについて知りませんでした - 正規表現の学習 - 私は私のニーズに合わせて変更しようとしていた!ありがとう、他のもののためにこれをもっと見るつもり。 –

関連する問題