-2

長い文字列があり、ルールベースで分割したい。私の文字列は次のとおりです。

    [1] (dokuma) deve, öküz, at tüyü, keçi kılı veya koyun yününün sıkıştırılarak sertleştirilmesiyle imal edilen ve giyecek yapımında kullanılan kalın ve kaba kumaş [2] (giyim) kumaştan yapılan yakasız bol ve uzun üstlük [3] (halk ağzı) abla, anne [4] (halk ağzı) dar pantolon üzerine giyilen ceket

そして、私は次のように表示したい:

[1] (dokuma) deve, öküz, at tüyü, keçi kılı veya koyun yününün sıkıştırılarak sertleştirilmesiyle imal edilen ve giyecek yapımında kullanılan kalın ve kaba kumaş 
[2] (giyim) kumaştan yapılan yakasız bol ve uzun üstlük 
[3] (halk ağzı) abla, anne 
[4] (halk ağzı) dar pantolon üzerine giyilen ceket

私のコードは次のとおりです。

String[] strMeaning = meanings.text().split("[");
        for(String key : strMeaning)
        {
            System.out.println(key);
        }

私が見たエラーは次のとおりです。

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0
[
^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.clazz(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.split(Unknown Source)
    at java.lang.String.split(Unknown Source)
    at wikipedia.CreateXML.wordMeaning(CreateXML.java:39)
    at wikipedia.CreateXML.prepareData(CreateXML.java:33)
    at wikipedia.Main.main(Main.java:32)

私は理解できませんでした。好きなように分割するにはどうすればよいですか?前もって感謝します

4

4 に答える 4

5

左角括弧は、文字クラス[の開始を示すために使用される特殊文字です。エスケープする必要があります。

meanings.text().split("\\[");
于 2013-03-10T22:45:15.497 に答える
3

[ は Java 正規表現の特殊文字です。

次のようなことを試してください:

String[] temp = text.split("\\[");
于 2013-03-10T22:47:01.003 に答える
1

角かっこは正規表現の特殊文字であるため、エスケープする必要があります。これは、一致を実行するために使用されます。ただし、java のバックスラッシュには特別な意味があるため、エスケープもエスケープする必要があります。あなたはで終わる

    String[] strMeaning = meanings.text().split("\\[");
    for(String key : strMeaning)
    {
        System.out.println("[" + key);
    }

println「[」で一致するとブラケットが削除されるため、に余分なビットを追加しました。

于 2013-03-10T22:46:57.350 に答える
1

私は次を使用します: String[] strMeaning = meanings.text().split("\s(?=\[)");. ON で分割するの[ではなく、次の の前に来るスペースで分割し[ます。

于 2013-03-10T22:53:15.580 に答える