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

ascend渐渐上升ascertain查明ascribe把····归因于比如这种信息,我想通过解析获得(ascend:渐渐上升),(ascertain:查明)(ascri... ascend 渐渐上升
ascertain查明
ascribe把····归因于
比如这种信息,我想通过解析获得(ascend:渐渐上升),(ascertain:查明)(ascribe:把...归因于)这种结构,怎么弄?
展开
 我来答
mks胡
2013-08-27 · TA获得超过184个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:135万
展开全部
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]表示汉字或者……或者;

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式