1

私は文字列を持っています例:文字DIGITAL SPORTS$8.95HD AO$9.95UCC REC$1.28RENTAL FEE$7.00LOCAL FRANCHISE$4.67 列を分割してマップを作成したい

DIGITAL SPORTS $8.95 
HD AO $9.95
UCC REC $1.28
RENTAL FEE $7.00
LOCAL FRANCHISE $4.67

文字列を分割する正規表現を書きました。以下のコードを見つけてください

private static String ledgerString = "DIGITAL SPORTS$8.95HD AO$9.95UCC REC$1.28RENTAL FEE$7.00LOCAL FRANCHISE$4.67";
private static Pattern pattern1 = Pattern.compile("([[a-zA-Z ]*\\$[0-9]*.[0-9][0-9]]*)");
private static Matcher matcher = null;
public static void main(String[] args) {
    // TODO Auto-generated method stub
    matcher = pattern1.matcher(ledgerString.trim());

    if (matcher.find()) {

        System.out.println(matcher.group(1));
    } 

}

上記の文字列からデータを抽出する方法を教えてください。

4

6 に答える 6

2

[...]グループ 1 のパターンは、おそらく今あなたが行おうとしている文字クラスにあります。多分あなたのパターンを

Pattern.compile("([a-zA-Z ]*)(\\$[0-9]*.[0-9][0-9]*)");

そして、このように使用します

while (matcher.find()) {
    System.out.println(matcher.group(1)+" "+matcher.group(2));
}

また、Java7以降はグループに名前を付けることができる(?<name>...)ので、これも可能です

Pattern.compile("(?<name>[a-zA-Z ]*)(?<price>\\$[0-9]*.[0-9][0-9]*)");

while (matcher.find()) {
    System.out.println(matcher.group("name")+" "+matcher.group("price"));
}

出力

DIGITAL SPORTS $8.95
HD AO $9.95
UCC REC $1.28
RENTAL FEE $7.00
LOCAL FRANCHISE $4.67
于 2013-05-28T15:32:00.573 に答える
1
private static String ledgerString = "DIGITAL SPORTS$8.95HD AO$9.95UCC REC$1.28RENTAL FEE$7.00LOCAL FRANCHISE$4.67";
private static Pattern pattern1 = Pattern.compile("([a-zA-Z ]+)(\\$[0-9]*\\.[0-9][0-9])");
private static Matcher matcher = null;
public static void main(String[] args) {
    // TODO Auto-generated method stub
    matcher = pattern1.matcher(ledgerString.trim());

    while (matcher.find()) {

        System.out.println(matcher.group(1) + " " + matcher.group(2));
    } 

}
于 2013-05-28T15:34:34.590 に答える
0

使用する正規表現は、関心のある各文字列に一致するものです。したがって、使用したい

Pattern.compile("([a-zA-Z] \$[0-9] .[0-9][0-9])");

これは、関心のある各「行」を識別するためです。その後、各行で split("$") を使用して、価格から説明を分離できます。

于 2013-05-28T15:35:34.133 に答える