Java Regex.Split与JavaScript的工作方式不同

时间:2018-09-04 10:34:31

标签: javascript java android regex

我正在将很长的JS Regex转换为Android Java库。

下面的JS code无疑从["","常","","に","","最新","、","最高"...]开始在数组中给出了29个项目

var keywords = /(\ |[a-zA-Z0-9]+\.[a-z]{2,}|[一-龠々〆ヵヶゝ]+|[ぁ-んゝ]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+)/g;
var source = '常に最新、最高のモバイル。Androidを開発した同じチームから。';
var result = source.split(keywords);

然后我如下转换为Java(JDK 1.8.0_151);

public class Japanese {
    static String keywords = "(\\ |[a-zA-Z0-9]+\\.[a-z]{2,}|[一-龠々〆ヵヶゝ]+|[ぁ-んゝ]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+)";

    public static String[] Split(String str) {
        return str.split(keywords, -1);
    }
}


@Test
public void test1() {
    String source= "常に最新、最高のモバイル。Androidを開発した同じチームから。";
    String[] result = Japanese.Split(source);

    System.out.println("length: " + String.valueOf(result.length));
    for (String w : result) {
        System.out.println(!w.equals("") ? w : "EMPTY");
    }
}

测试结果只有15个项目,并且包含以下错误项目;

length: 15
EMPTY
EMPTY
EMPTY
、
EMPTY
EMPTY
。
EMPTY
EMPTY
EMPTY
EMPTY
EMPTY
EMPTY
EMPTY
。

我在做什么错了?

0 个答案:

没有答案