—— 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();
}}));

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

freeregex-0.01 使用文档的更多相关文章

  1. Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探

    Android BLE与终端通信(五)--Google API BLE4.0低功耗蓝牙文档解读之案例初探 算下来很久没有写BLE的博文了,上家的技术都快忘记了,所以赶紧读了一遍Google的API顺便 ...

  2. 基于WPF系统框架设计(5)-Ribbon整合Avalondock 2.0实现多文档界面设计(二)

    AvalonDock 是一个.NET库,用于在停靠模式布局(docking)中排列一系列WPF/WinForm控件.最新发布的版本原生支持MVVM框架.Aero Snap特效并具有更好的性能. Ava ...

  3. confluence6.0.3安装文档

    一.Atlassian Confluence 6.0.3安装文档包含内容 1.wiki的安装步骤: 2.旧系统迁移中碰到的无法编辑和问题和解决方案: 3.wiki源码安装包.连接mysql用的jar包 ...

  4. ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现

    from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...

  5. OllyScripts 0.92帮助文档

    -------------------------------Olly脚本插件v0.92 制作: SHaG文档汉化:ZMWorm[CCG][TT]E-Mail:TranslationTeam[at]1 ...

  6. smarty3.0中文手册文档API及使用指南

    1.安装Smarty3.0一.什么是smarty?smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变 ...

  7. 【开源】AspnetCore 2.0 自动API文档生成组件,支持protobuffer

    本文地址 http://www.cnblogs.com/likeli/p/8204054.html 关于 API文档自动生成,用于对APP端的开发帮助文档生成,默认ProtoBuffer传输格式. 本 ...

  8. OpenXml SDK 2.0 创建Word文档 添加页、段落、页眉和页脚

    using (WordprocessingDocument objWordDocument = WordprocessingDocument.Create(@"C:\********.doc ...

  9. ORACLE 12.1.0.1 至12.1.0.2升级文档(单机版 DBUA方式)

    12C DBUA新特性 1. 新的pre-upgrade 检查工具. 2. 并行升级. 3. DBUA升级时,默认并行度为CPU个数或2. 并行度可调整. 4. 在升级过程中,DBUA工具可再次调用( ...

  10. NGINX Ingress控制器1.0.0升级迁移文档(翻译)

    Ingress 是什么 Ingress 是对k8s集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP. Ingress 可以提供负载均衡.SSL 终结和基于名称的虚拟托管. 最近 ...

随机推荐

  1. 用c++写一个简单的计算器程序

    // 050305.cpp : 定义控制台应用程序的入口点.// // 050304.cpp : 定义控制台应用程序的入口点.////四则运算#include "stdafx.h" ...

  2. Codeforces Round #232 (Div. 2) D. On Sum of Fractions

    D. On Sum of Fractions Let's assume that v(n) is the largest prime number, that does not exceed n; u ...

  3. 更新程序基于IIS

    闲着无聊写了个更新程序; 1.支持多种文件格式 2.支持按版本号/文件大小/文件时间进行判断更新 3.支持多级文件目录创建

  4. C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别

    全局变量.局部变量.静态全局变量.静态局部变量的区别 C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作 ...

  5. gcc for windows(mingw)编译多个c文件

    myString.c myString.h main.c 其中,myString.c与myString.h对应,myString.h文件中是一些函数的声明,而myString.c文件中是.h文件中声明 ...

  6. android-----test------模拟来电提醒和短信提醒

    为了测试应用是否能处理来电提醒和短信提醒时正常处理,我们需要做个测试,怎么模拟来电提醒和短信提醒呢?? 采用Telnet 命令来模拟. 1.首先看看Telnet 命令是否可以使用,如果不可以使用,则需 ...

  7. background-size拉伸背景图片

    在制作页面中常需要对背景图片在容器中进行平铺,可用background-size属性对背景编辑:拉伸,压缩等~ background-size:contain; 将背景扩展到整个容器大小. 较为实用的 ...

  8. mysql 忘记root 密码的解决方法

    LINUX 1.切换root 用户 2.停止mysqld 服务 /etc/inid.d mysqld stop 3.跳过验证登录 mysqld_safe --skip-grant-tables &am ...

  9. sasscore22

    1.setting 如果不需要支持ie6,7,请在引入setting文件之前,设置$lte7:false;. $lte7: true !default  表示的是是否兼容it6/7 2.css3 是一 ...

  10. C# MVC ( 添加路由规则以及路由的反射机制 )

    在项目文件夹下找到 App_Start 下 找到 RouteConfig.cs文件 打开   (1) 约束的规则 从上往下 贪婪性   (2) 用 routes.MapRoute(...) 添加   ...