Java使用正则获取括号里面的内容
作者:RC_D
这篇文章主要介绍了Java使用正则获取括号里面的内容问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
Java正则获取括号里面的内容
其实严格来说是叫获取组里面的内容
先说核心,Matcher的方法group()可以取出括号里面的内容,0是取出所有匹配字符串,即:不会按照组这个说法来匹配,之后就可以依次取出我们用括号括起来的内容。
例子:
// 创建 Pattern 对象 Pattern r = Pattern.compile("xx[\s,\S]+?()ss") // 现在创建 matcher 对象 Matcher m = r.matcher("你的字符串"); //获取括号里面的内容 m.group(1);
Java对字符串的正则
//JS数据爬取 //获取当前页面的核心列表 String s = page.getHtml().regex(JSConstants.kernelPattern).toString(); //获取时间、标题和链接 String pattern = JSConstants.supplementPattern; // 创建 Pattern 对象 Pattern r = Pattern.compile(pattern); // 现在创建 matcher 对象 Matcher m = r.matcher(s); //找出匹配项中的全部链接 extracted(m); //提出数据中的所有链接 private void extracted(Matcher m) { while (m.find()) { IndexPage indexPage = new IndexPage(); Date date = new Date(); String link = m.group(1); String title = m.group(2); String time = m.group(3); try { date = new SimpleDateFormat("yyyy-MM-dd").parse(time); System.out.println(date); } catch (ParseException e) { e.printStackTrace(); } indexPage.setTime(date); indexPage.setTitle(title); indexPage.setLink("你的网址" + link); indexPageList.add(indexPage); } }
核心代码其实不多。
- 获取字符串str。
- 声明一个Pattern对象,调用其compile静态方法,获取一个正常的统配符对象r。
- 通过r的matcher()方法,给它我们的字符串str,即r.matcher(str),获得一个matcher对象m
- 最后,就可以通过matcher对象取出我们想要的数据,取出组的话,要使用m的方法group(),0是取出所有匹配字符串,即不会按照组这个说法来匹配,之后就可以依次取出我们用括号括起来的内容。
Java正则获取括号内的数据与排除括号内的数据
正则获取括号内的数据
/** * 获取指定字符串中括号内的内容,返回字符串数组 * @param content * @return */ public String[] getBracketContent(String content){ String [] arr = new String[0]; Pattern p = Pattern.compile("(?<=\\()[^\\)]+"); Matcher m = p.matcher(content); while(m.find()){ arr = Arrays.copyOf(arr,arr.length+1); arr[arr.length-1]=m.group(); } return arr; }
排除括号及括号内的数据
/** * 排除括号及括号内的数据 * @param content * @return */ public String getWord(String content){ return content.replaceAll("[\\[][^\\[\\]]+[\\]]|[\\(][^\\(\\)]+[\\)]", ""); }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。