• freeregex-0.01 使用文档


    —— freeregex,简化字符串处理

    freeregex使用大体分为两个部分:

    • 正则确定
    • 功能操作

    正则确定:共有EMAIL、IP等静态属性;anyOf(String regex)静态方法 ;和or(FreeMatcher other)方法
    功能操作:根据在“正则确定”过程中确定的正则表达式,在文本中进行操作,FreeMatcher类中拥有多个操作方法

    String txtString = "10213asfas hasnf 10032 asdfa 12 1231254 fsdafsd";
    String regexString = "\d+";
    System.out.println(FreeMatcher.anyOf(regexString).matchesAllOf(txtString));
    

    上面这段代码是最基础的用法,在anyOf中填写正则表达式,再在功能操作函数中输入文本。
    因为在字符串处理中,经常会遇到EMAIL、IP等的判断,所以该类库中内置了多种常用的正则表达式,所以anyOf可以用多个内置静态属性来代替,如下所示:

    System.out.println(FreeMatcher.EMAIL.matchesAllOf("hansjason@163.com"));
    

    在进行正则匹配中,经常会遇到多个正则模式均可匹配成功的需求,在FreeMatcher类中拥有or方法可以将多个正则表达式进行“或”连接,省去了手工编写的麻烦,而且使逻辑更加清晰,下面就是一个Email和QQ号皆可通过验证的演示:

    System.out.println(FreeMatcher.EMAIL.or(
    				FreeMatcher.anyOf("[1-9]\d{4,}")).matchesAllOf(
    				"hansjason@163.com"));
    

    多种“正则确定”的方法演示完成之后,再向大家介绍部分“功能操作”的方法
    boolean matchesAllOf(CharSequence sequence):判断sequence是否与正则全部匹配
    boolean matchesAnyOf(CharSequence sequence):判断sequence中是否有可以与正则匹配的部分
    List retainAllFrom(CharSequence sequence):返回sequence中所有与该正则匹配的子串
    List retainAllFrom(CharSequence sequence, int group):返回sequence中所有与该正则匹配的子串的第group个分组

    正则分组 —— 正则表达式中,可以用圆括号括起一部分子表达式,以方便后续操作。
    如“(w+([-+.]w+))@(w+([-.]w+).w+([-.]w+)*)”整个表达式为第0号分组,从左向右看,圆括号左部第一个出现的括号中包括的部分为第1号分组,以此类推。

    String A = "saoifqewrq asdfasdf@163.com asdfa@126.com asdfasdf";
    System.out.println(FreeMatcher.anyOf(
    		"(\w+([-+.]\w+)*)@(\w+([-.]\w+)*\.\w+([-.]\w+)*)")
    		.retainAllFrom(A, 3));
    

    上文代码即可分析出,大家用的是什么种类的邮箱。

    List allIndexIn(CharSequence sequence, int start):获取sequence中,从start位置开始, 所有符合正则的子串的首字符位置的list
    int countIn(CharSequence sequence):获取sequence中,有多少个符合正则的子串
    String replaceFrom(CharSequence sequence, String replacement):用replacement,替换原字符序列中,符合正则的子串
    String replaceFrom(CharSequence sequence, FreeReplacement replacement):该函数解决了,在执行替换操作时,需要在原字符串基础之上进行修改的问题。只要实现FreeReplacement中的replacementMethod方法指出如何从原字符串变成新字符串,既可以按照replacementMethod中指定的规则来实现变换。

    System.out.println(FreeMatcher.anyOf(regexString).replaceFrom(
    		txtString, new FreeReplacement() {
    			public String replacementMethod(String original) {
    				char[] charArray = original.toCharArray();
    				StringBuilder sb = new StringBuilder("");
    				int j = charArray.length;
    				for (int i = 0; j > 0;i++) {
    					if (i!=0&&i % 3 == 0) {
    						sb.insert(0, ',');
    					} 
    						sb.insert(0, charArray[j - 1]);
    						j--;					
    				}
    				System.out.println(sb);
    				return sb.toString();
    			}}));
    

    该类库的主要的一些功能在这里就已经介绍完了,希望能很好的满足大家对正则表达式的需求,简化大家的代码量,同时希望能参与到这个项目中,修改它,完善它。

  • 相关阅读:
    null和undefined的区别
    减少页面加载时间的方法
    html5有哪些新特性、移除了那些元素?
    cookies,sessionStorage 和 localStorage 的区别
    小程序页面
    快速保存网页图片的工具
    Flex 布局教程
    第一阶段:Python开发基础 day08 Python基础语法入门--列表元组字典集合类型的内置方法
    第一阶段:Python开发基础 day08 数据类型的内置方法 课后作业
    python学习第一周知识内容回顾与小结
  • 原文地址:https://www.cnblogs.com/ironPhoenix/p/4280420.html
Copyright © 2020-2023  润新知