加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式实例

发布时间:2020-12-13 22:52:58 所属栏目:百科 来源:网络整理
导读:正则表达式就是记录文本规则的代码。关于它的介绍,请参考“ 正则表达式30分钟入门教程 ”。本文以一个实例介绍它在Java语言下的应用。 假设我们想要分析一段C++代码,获取代码中定义的函数名称、返回类型、函数参数。如下所示都是C++定义的合法函数: int g

正则表达式就是记录文本规则的代码。关于它的介绍,请参考“正则表达式30分钟入门教程”。本文以一个实例介绍它在Java语言下的应用。

假设我们想要分析一段C++代码,获取代码中定义的函数名称、返回类型、函数参数。如下所示都是C++定义的合法函数:

    int get(int index)
    char *get(char *str,int index)
    double add(double a,double b)
    char &get(char str[],int index)
  1. 匹配返回类型:(w+s+[*,&]*s*)
  2. 匹配函数名:(w+s*)
  3. 匹配函数参数:(((s*w+s+[*,&]*s*w+([[0-9]*])*(s*,s*w+s+[*,&]*s*w+([[0-9]*])*)*)?s*))
  4. 将上述三者合并:(w+s+[*,&]*s*)(w+s*)(((s*w+s+[*,s*w+s+[*,&]*s*w+([[0-9]*])*)*)?s*))
可以使用正则表达式工具(如Regex Match Tracer)对表达式进行判断:


工具的最下方会显示每个匹配模式的分组情况,这个根据正则表达式添加括号有关。如下图所示:



下面开始介绍Java与正则表达式的结合应用。
  1. Java提供java.util.regex.Pattern类保存正则表达式,上述的表达式我们可以按如下进行声明(因为Java保留了作为转义字符,所以需要用转义):
    Pattern p = Pattern.compile("(w+s+[*,&]*s*)(w+s*)(((s*w+s+[*,&]*s*w+([[0-9]*])*(s*,s*w+s+[*,&]*s*w+([[0-9]*])*)*)?s*))");
  2. java.util.regex.Pattern类对字符串进行正则表达式匹配:
    Matcher m = p.matcher((CharSequence) string)
  3. 逐个获得匹配的字符串:
    while (m.find()) {//find函数查询下一个匹配的字符串,如查询到则返回true
            String matched = m.group(0);//group获得匹配字符串的内容,下标代表分组值。下标及对应内容可以查看上图
            String returnType = m.group(1);
            String methodName = m.group(2);
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读