-2

と の正規表現は初めてでStringTokenizer、この正規表現を に入れるたびに構文エラーが発生しますmatches

while ((line = br.readLine()) != null) { 
    StringTokenizer stringTokenizer = new StringTokenizer(line, "\n");

    while (stringTokenizer.hasMoreElements()) {
        String function = stringTokenizer.nextElement().toString();

        if (function.matches(\\s*(unsigned int|float|int|char|void|double)(\\s)+[a-zA-Z_](\\w)*(\\s)*\\((\\s)*((((unsigned int|float|int|char|double)(\\s)*,(\\s)*)*((unsigned int|float|int|char|double)(\\s)*))|(\\s)*|(void)(\\s)*)\\)(\\s)*\\;)) {
            System.out.println("VALID - ");
        }
    }
}
4

3 に答える 3

0

コピーアンドペーストエラーの可能性がありますが、正規表現を囲む引用符が欠落している可能性がありますString。例えば:

while ((line = br.readLine()) != null) { 
    StringTokenizer stringTokenizer = new StringTokenizer(line, "\n");

    while (stringTokenizer.hasMoreElements()) {
        String function = stringTokenizer.nextElement().toString();

        if (function.matches("\\s*(unsigned int|float|int|char|void|double)(\\s)+[a-zA-Z_](\\w)*(\\s)*\\((\\s)*((((unsigned int|float|int|char|double)(\\s)*,(\\s)*)*((unsigned int|float|int|char|double)(\\s)*))|(\\s)*|(void)(\\s)*)\\)(\\s)*\\;")) {
            System.out.println("VALID - ");
        }
    }
}
于 2013-01-28T16:49:29.867 に答える
0

matchesメソッドはメソッド引数として受け取ります...したがって、次のように引用符" "Stringで正規表現を囲みます 。

function.matches("\\s*(unsigned int|float|int|char|void|double)(\\s)+[a-zA-Z_](\\w)*(\\s)*\\((\\s)*((((unsigned int|float|int|char|double)(\\s)*,(\\s)*)*((unsigned int|float|int|char|double)(\\s)*))|(\\s)*|(void)(\\s)*)\\)(\\s)*\\;)")
于 2013-01-28T17:07:33.757 に答える
0

文字列を引用符で囲みます" "((unsigned int) | float)


while ((line = br.readLine()) != null) { 
StringTokenizer stringTokenizer = new StringTokenizer(line, "\n");

while (stringTokenizer.hasMoreElements()) {
    String function = stringTokenizer.nextElement().toString();

    if (function.matches("\\s*((unsigned int)|float|int|char|void|double)(\\s)+[a-zA-Z_](\\w)*(\\s)*\\((\\s)*((((unsigned int|float|int|char|double)(\\s)*,(\\s)*)*((unsigned int|float|int|char|double)(\\s)*))|(\\s)*|(void)(\\s)*)\\)(\\s)*\\;")) {
        System.out.println("VALID - ");
    }
}

}

于 2013-01-28T17:38:51.697 に答える