请问如何用java正则表达式提取下面文字中的中英文对照关系?

ascend 渐渐上升
ascertain查明
ascribe把····归因于
比如这种信息,我想通过解析获得(ascend:渐渐上升),(ascertain:查明)(ascribe:把...归因于)这种结构,怎么弄?

public final static Pattern PATTERN = Pattern.compile("^(\\w+?)\\b([\u4e00-\u9fa5(\u2026\u2026)\uFF1B]+)$");

private static String replace(String words) {
    Matcher m = PATTERN.matcher(words);
    StringBuilder sb = new StringBuilder();
    while (m.find()) {
        sb.append(String.format(",(%s:%s)", m.group(1), m.group(2)));
    }
    return sb.toString().subString(1);
}

追问

求大神解释一下这个正则

追答

^表示行开头 $表示行结尾(对了我忘了一个参数)

public final static Pattern PATTERN = Pattern.compile("^(\\w+?)\\b([\u4e00-\u9fa5(\u2026\u2026)\uFF1B]+)$", Pattern.MULTILINE);

第一个()表示对括号里的表达式匹配的内容进行捕获(也就是储存到了Matcher的group(1))

\w+?(多一个斜杠是因为要转义)表示任意字母,等价于[a-zA-Z] +是量词表示只能出现一次以上, ?是惰性量词

\b表示单词分隔

[\u4e00-\u9fa5(\u2026\u2026)\uFF1B]表示汉字或者……或者;

温馨提示:答案为网友推荐,仅供参考
相似回答