Java使用正则获取括号里面的内容

 更新时间:2023年05月26日 10:41:48   作者: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("[\\[][^\\[\\]]+[\\]]|[\\(][^\\(\\)]+[\\)]", "");
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

最新评论