JavaBasic_正则表达式
就是符合一定规则的字符串 规则字符在java.util.regex.Pattern类中
字符转义
\. 匹配.字符
\* 匹配*字符
\\ 匹配\字符
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
字符类
[abc] -- a、b 或 c(简单类) 只匹配其中的单个字符 两个是不匹配的 比如 ab 是不匹配的
[^abc]-- 任何单个字符,除了 a、b 或 c(否定)
[a-zA-Z]-- a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9]-- 0到9的字符都包括
常用的元字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
A) 在正则表达式 单词组成 必须有这些东西组成
B) 在英文字符下, 相当于 [a-zA-Z_0-9]
\s 匹配任意的空白符
\d 匹配数字
\b 单词边界 就是不是单词字符的地方。 就是说不是\w 不是数字, 字母, 连接字符 或者汉字
举例:hello world?haha;xixi
^ 匹配字符串的开始
$ 匹配字符串的结束
^\d{5,12}$ 匹配5-12个连续的数字, 但字符串的长度可以超过12个
\d{5,12} - 匹配5-12个连续的数字,只剩5个连续的数字, 最多12个连续的数字
重复字符
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次 (重复0次 就是前面的字符可以不出现, 一次就是出现一次)
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
常见功能:(分别用的是谁呢?)
A: 判断功能
String类的public boolean matches(String regex)
B: 分割功能
String类的public String[] split(String regex)
C: 替换功能
String类的public String replaceAll(String regex,String replacement)
D: 获取功能 Pattern和Matcher
模式和匹配器的基本使用顺序
// 把正则表达式 编译成模式对象
Pattern p = Pattern.compile("a*b");
// 通过模式对象得到匹配器对象, 这个时候需要传递的是被匹配的字符串
Matcher m = p.matcher("aaaaaab");
// 调用匹配器对象的功能
boolean b = m.matches();
public boolean find() - 查找是否存在符合规则的子序列
public String group(int group) - 返回匹配的子序列, 每次只返回第一次匹配的子序列, 后面以次类推。
IllegalStateException- 如果没有尝试任何匹配,或者以前的匹配操作失败。
IndexOutOfBoundsException- 如果在给定索引的模式中不存在捕获组。
注意: 在使用group之前必须先调用find()方法, 否则抛出 IllegalStateException 异常
// 循环打印出符合规则的子序列
while(m1.find()){
System.out.println(m1.group());
}
(4) 案例
A: 判断电话号码和邮箱
B: 按照不同的规则分割数据
C: 把论坛中的数字替换为 * String regex = "\\d+" or String regex = "\\d";
D: 获取字符串中由3个字符组成的单词 String regex = "\\b\\w{3}\\b";
JavaBasic_正则表达式的更多相关文章
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 【JS基础】正则表达式
正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...
随机推荐
- SG函数值
如果只有单个游戏,只需找必胜态就行,不用找sg函数值,这样节省一个常数的时间. 但是多个游戏时一定要sg函数的异或来判断成败.因为虽然必败态一定到必胜态,但是必胜态不一定到必败态就是最优的.而单个游戏 ...
- laravel 资源篇
转自:https://github.com/qianyugang/learn-laravel # Learn-Laravel — 学习资料和开源项目集 ## Laravel 学习资料 ### 官方网站 ...
- Flask之项目配置,目录构建,闪现
综合案例:学生成绩管理 新建项目目录students,并创建虚拟环境 mkvirtualenv students 安装开发中使用的依赖模块 pip install flask==0.12.4pip i ...
- Python之时间(time)模块
在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(time.time( ...
- ie 下date对象
var t = '2014-02-26T21:18:02.497' var a = t.replace(/(\d{4})-(\d{2})-(\d{2})T(.*)?\.(.*)/, "$1/ ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)
梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...
- [Linux]Redhat7配置本地镜像源
一.Redhat7源 上一个文章介绍了如何配置的Redhat7的YUM网络源:[Linux]Redhat7配置CentOS7 YUM源 .如果在无法联网的情况下,可以使用镜像文件作为源安装需要的包. ...
- 一月分四周的JAVA实现方法
需求:给定任意一个月,如何按照中国周的习惯,把一个月分成四个时间段 (1)以自然周为划分依据 (2)不能跨月 (3)把首尾自然周,天数较少的合并到其最近的自然周里面 (4)最后结果应该是吧一个月分成四 ...
- LNMP(二)
第二十一课 LNMP(二) 目录 一.默认虚拟主机 二.Nginx用户认证 三.Nginx域名重定向 四.Nginx访问日志 五.Nginx日志切割 六.静态文件不记录日志和过期时间 七.Nginx防 ...
- 还是畅通工程,最小生成树kruskal
题目描述: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可 ...