質問

思を指定する区切り文字スキャナーが分割の一部のパターン、なかなかできないので削除するパターンからトークンないのですが、この仕事としていることによって識別され、regexのものが食べられるのになります。ご意見募集

具体的に問題ないファイルを次のように記述されています。

text/numbers mix
numbers
numbers
text/numbers mix
numbers
numbers
numbers
.
.

私は分からのテキスト/ミックス番号+列のテキスト/数字混合する。私は、regexいずれかを見分けるため、記載をしては、区切り文字を食べるのかってきた。

編集:コードを追加しました。

static final String labelRegex="\\s*[^01\\s*]\\w+\\s*";
static final Pattern labelPattern = Pattern.compile(labelRegex, Pattern.MULTILINE);

のパターンIを識別するために使用されるテキスト番号のビット(私は知ってい数字列を含むすべて1/0sスペースで区切られた).

私が初期化のスキャナー:

stateScan = new Scanner(new BufferedReader(new FileReader(source)));
stateScan.useDelimiter(labelPattern);

この食べるラベルを、ものを並列する。私は、現在の実装で始まる二つのスキャナの二つのバッファ付きファイルの読者からの同一のソースは、分割による国およびその他のラベルによる.うにいくつかみラベルを+の状態です。

役に立ちましたか?

解決

利用できる正の先見のおregex.見aheads(behinds"には含めておりません。に合致しないようにする"食"を読み取ってくれます。この正規表現だろうかい:

(?=text/numbers)

区切り文字は空文字列の前に、サブ文字列 text/numbers.

こちらは小さなデ

public class Main {
    public static void main(String[] args) {
        String text = "text/numbers mix\n"+
                "numbers\n"+
                "numbers\n"+
                "text/numbers mix\n"+
                "numbers\n"+
                "numbers\n"+
                "numbers";
        String regex = "(?=text/numbers)";
        Scanner scan = new Scanner(text).useDelimiter(regex);
        while(scan.hasNext()) {
            System.out.println("------------------------");
            System.out.println(">"+scan.next().trim()+"<");
        }
    }
}

を生み出す:

------------------------
>text/numbers mix
numbers
numbers<
------------------------
>text/numbers mix
numbers
numbers
numbers<
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top