1

私はこのような文字列を持っています:1/80% of all goods sold for $44 million dollars or more/90/55 基本的に私はパターンを持つ文字列を持っています:

「数字」「スラッシュ」「スラッシュを含む句読点を含むテキスト」「スラッシュ」「数字」「スラッシュ」「数字」

テキストブロックにスラッシュが含まれている可能性があるため、stringtokenizer を使用してスラッシュをトークン化することはできません。Javaでパターンとマッチャーを使用するのは初めてです。これを行う方法についての手がかりはありますか?または役に立つかもしれないチュートリアル? 前もって感謝します!

4

4 に答える 4

1

この正規表現はそれを行う必要があります:

^(\d+)\/(.*?)\/(\d+)\/(\d+)$

デモ:http ://www.rubular.com/r/ZIhe8iE0L0

于 2012-07-24T15:37:44.103 に答える
0

おそらく、これは正規表現として機能します。

^\d+/.*/\d+/\d+$

必要に応じてキャプチャグループを追加します。これは、テキストに改行文字が含まれていない限り機能するはずです。

于 2012-07-24T15:37:35.723 に答える
0

#/#<テキスト>/#/# を探しています

動作するはずのコードを次に示します。

    String toScan = "Did you know that 1/80 of all goods sold for $44 million or more/90/55? It's cool, because 1/5 of all people can type /1/2 like that.";
    String regexp = "[0-9]{1,}/[0-9]{1,}.{1,}?/[0-9]{1,}/[0-9]{1,}";
    Pattern pattern = Pattern.compile(regexp);
    Matcher m = pattern.matcher(toScan);
    while(m.find())
        System.out.println(m.group());
于 2012-07-24T15:41:48.827 に答える
0

ここに簡単なテストがあります

import java.util.regex.*;

class RTest
{
public static void main(String[] args)
{
    String test1 = "1/80% of all goods sold for $44 million dollars or more/90/55";
    String test2 = "1/80% of all goods sold for $44 /million dollars or more/90/55";

    String patternStr = "(.*?)/(.*)/(.*?)/(.*?)$";
    Pattern pattern = Pattern.compile(patternStr);

    System.out.println("Test1...");
    // Test 1
    Matcher matcher = pattern.matcher(test1);
    boolean matchFound = matcher.find();

    if (matchFound)
    {
        for (int i = 0; i<=matcher.groupCount(); i++)
        {
            System.out.println(matcher.group(i));
        }
    }

    System.out.println("Test2...");
    // Test 2
    matcher = pattern.matcher(test2);
    matchFound = matcher.find();

    if (matchFound)
    {
        for (int i = 0; i<=matcher.groupCount(); i++)
        {
            System.out.println(matcher.group(i));
        }
    }       
}

}

于 2012-07-24T15:53:20.413 に答える