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 ...
随机推荐
- hihocoder #1044 : 状态压缩·一 状压DP
http://hihocoder.com/problemset/problem/1044 可以看出来每一位的选取只与前m位有关,我们把每个位置起始的前m位选取状态看出01序列,就可以作为一个数字来存储 ...
- 范式及其在mysql数据库设计中的应用
一.什么是范式 1.1.范式:Normal Format,是离散数学的知识,是为了解决数据的存储与优化而提出来的.要求存储数据后,凡是能够通过关系寻找出来的数据,坚决不再重复存储,终极目标是为了减少数 ...
- Runtime-消息发送和消息转发
消息发送 消息发送举例:下面这个OC代码 [person read:book]; 会被编译成: objc_msgSend(person, @selector(read:), book); objc_m ...
- 使用MongoDB数据库(2)(三十六)
快速开始使用Spring-data-mongodb 若MongoDB的安装配置采用默认端口,那么在自动配置的情况下,我们不需要做任何参数配置,就能马上连接上本地的MongoDB.下面直接使用sprin ...
- 由通过seeion识别保存在cookie中的seeionID引发的CSRF问题
上图是一个完整的CSRF攻击过程解释图 重点是第三句话 用户在没有登出的情况下,被攻击者获得了SESSIONID信息,伪造真用户登录 二.CSRF防御 通过 referer.token 或者 验证码 ...
- Win10系列:C#应用控件基础11
RichEditBox控件 富文本格式是一种跨平台的文档格式,在这种格式的文档中可以编辑文本.图片.链接等内容.通过RichEditBox控件可以对富文本格式的文档进行编辑. 在XAML文件中,Ric ...
- linux c使用socket进行http 通信,并接收任意大小的http响应(二)
先贴请求头部信息组织代码. 有同学会疑问http_url.h是干什么用的,我要在这里声明,http_url.h并不是给http_url.c用的,实际上http_url.h声明了http_url.c已经 ...
- 企业面试题:Buffer与cache的区别?
buffer缓冲 cache是缓存. 写缓冲,读缓存.简单点说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的.缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行 ...
- 分数化小数(decimal)
分数化小数 ①我的程序 #include<iostream>using namespace std;int main(void){ int a,b,c,kase=0; while(scan ...
- Android : 跟我学Binder --- (2) AIDL分析及手动实现
目录: Android : 跟我学Binder --- (1) 什么是Binder IPC?为何要使用Binder机制? Android : 跟我学Binder --- (2) AIDL分析及手动实现 ...