美文网首页
正则表达式笔记

正则表达式笔记

作者: silencefun | 来源:发表于2018-10-11 18:26 被阅读6次

    a.过滤替换
    Android Webview加载html片段,
    由于html 的字符串中间穿插很多图片的尺寸是不定的,造成了部分图片是超过了屏幕,

    解决办法:
    使用replace方法把 img width全部替换为100%

     String data = Html.fromHtml(content).toString();
      data = data.replaceAll("width=\"\\d+\"", "width=\"100%\"").replaceAll("height=\"\\d+\"", "height=\"auto\"");
     webview.loadDataWithBaseURL("http://webhost.net", data, "text/html", "UTF-8", null);
    

    处理行业数据 过滤掉一些信息如 网站 电话

    String cc = "立足农村,传播科技、提升价值,www.test.net等待您的入住http://t.cn/SXiTxxPi";
        Pattern pattern = Pattern.compile( "(http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&*=]*))");
        Matcher matcher = pattern.matcher(cc);
        cc = matcher.replaceAll("");
        
        Pattern pattern2 = Pattern.compile( "([\\w-]+\\.)+[\\w-]+([\\w-./?%&*=]*)");
        cc =  pattern2.matcher(cc).replaceAll("");
    

    b.找到固定的

    parentdir为文件名,可能包含特殊符号 和数字编号

     String content = parentdir.getName().replace("、", " ").replace("-", " ").replace(".", " ").replace("$", " ");
    
        // System.err.println("------content-------->" + content);
        String dirname = content;
        // 去除 索引数字和 点
        Pattern pattern = Pattern.compile("^(\\d+)(.*)");
        Matcher matcher = pattern.matcher(content);
        if (matcher.matches()) {// 数字开头
            // System.out.println(matcher.group(1));// 编号
            // System.out.println(matcher.group(2));// 剩余的
            dirname = matcher.group(2);
        }
    

    c.正则在sql 查询中的使用
    场景 mysql 中某些字段 处理 都是编号数字开头的 去除开头或者 去除固定的 字符串

    查找name字段中以'st'为开头的所有数据:
    
    mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
    查找name字段中以'ok'为结尾的所有数据:
    
    mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
    查找name字段中包含'mar'字符串的所有数据:
    
    mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

    相关文章

      网友评论

          本文标题:正则表达式笔记

          本文链接:https://www.haomeiwen.com/subject/buqiaftx.html