请问如何用java正则表达式提取下面文字中的中英文对照关系?
ascend渐渐上升ascertain查明ascribe把····归因于比如这种信息,我想通过解析获得(ascend:渐渐上升),(ascertain:查明)(ascri...
ascend 渐渐上升
ascertain查明
ascribe把····归因于
比如这种信息,我想通过解析获得(ascend:渐渐上升),(ascertain:查明)(ascribe:把...归因于)这种结构,怎么弄? 展开
ascertain查明
ascribe把····归因于
比如这种信息,我想通过解析获得(ascend:渐渐上升),(ascertain:查明)(ascribe:把...归因于)这种结构,怎么弄? 展开
1个回答
展开全部
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]表示汉字或者……或者;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询