-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

我会使用以下内容String[] strMeaning = meanings.text().split("\s(?=\[)");:您不想拆分 ON[而是拆分 next 之前的空间[

于 2013-03-10T22:53:15.580 回答
1

您需要转义方括号,因为这是正则表达式中的特殊字符,用于执行匹配。但是,您还需要转义转义,因为 java 中的反斜杠具有特殊含义。你最终得到

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

我在“[”中添加了额外的位,println因为“[”中的匹配将删除括号。

于 2013-03-10T22:46:57.350 回答