黑马程序员——正则表达式详解
来源:互联网 发布:python 2.7 sorted 编辑:程序博客网 时间:2024/05/30 05:30
01.------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、概述
正则表达式在Java十分重要,初学者往往认为它很难,因为它很多,很乱。但是,当你静下心来好好总结,你会发现其实它很简单,本篇文章是自己学习正则表达式的总结。旨在让大家快速学会Java正则表达式。
话入正题,那么什么事正则表达式呢?它的本质又是什么呢?好吧,首先,我就想回答这两个问题吧,正则表达式就是按一定规则进行匹配的字符串,也就是说它的本质就是字符串。而且,我还可以告诉你,String类中的match(String regx),split(String regx)以及replaceAll(String regx)方法,都会用到正则表达式,那么下面让我们边思考,边学习正则表达式吧。
二、常见的匹配规则
我们在上面说过,正则表达式是按一定规则进行匹配的字符串,那么我们首先就要了解它的匹配规则,常见的匹配规则如下:
A:字符
x 字符 x。举例:'a'表示字符a
\\ 反斜线字符。
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
B:字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
C:预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:hello world?haha;xixi
E:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
以上仅仅为我们常用的,并不是全部的,但是,它已经能满足我们大部分需求了,如果,我们有更苛刻的要求,请详见api。
三、实例演示
个人认为说的再多,不如用几个例子效果来的快,下面就举两个例子进行学习:
(1)邮箱验证功能,测试数据为 dyn@qq.com itheima@heima.com.cn jdbaidu@163.com 。代码实现如下:
package com.dyn.itheima.test12;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Regex {
public static void main(String[] args) {
// 创建输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
//提示
System.out.println("请输入邮箱");
// 定义匹配规则
String regex = "\\w+@(\\w{1,10}\\.\\w{1,10}){1,2}";
try {
// 获取输入数据
String email = reader.readLine();
// 判断是否匹配
if (email.matches(regex)) {
System.out.println("恭喜你,你输入邮箱 " + email + " 格式合格");
} else {
System.out.println("抱歉,你输入邮箱 " + email + " 格式不合格");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(2)从指定字符串中,获取子字符串。测试数据为 “hello java , how are you? yes i am , Thanks ,and you? Aye you ok?” ,要求从中找出两个字母的单词。测试代码如下:
package com.dyn.itheima.test12;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex1 {public static void main(String[] args) {
// 定义册书数据
String src = "hello java,how are you? yes i am,Thanks,and you?Are you ok?";
//定义匹配规则
String regex = "\\s\\w{2}\\b";
//创建匹配模式
Pattern pattern = Pattern.compile(regex);
//返回匹配器
Matcher matcher = pattern.matcher(src);
//输出查询结果
while(matcher.find()){
System.out.println(matcher.group());
}}
}
四、总结
上面的例子简单吧,如果你感觉难,那么很有可能是上面的用到的方法,不够熟悉。那么接下来,你需要做的就是,查看api,把上面的代码看懂,然后自己可以再练习几个,比如身份证验证,邮编验证等等,相信你会很快掌握Java正则表达式的用法。另外呢,本人技术有限,上面的代码可能存在不合理的地方,还望大家积极点评。
- 黑马程序员——正则表达式详解
- 黑马程序员—正则表达式详解
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员———正则表达式
- 黑马程序员———正则表达式
- 黑马程序员———正则表达式
- 黑马程序员———正则表达式
- 黑马程序员——正则表达式
- 黑马程序员——正则表达式
- 黑马程序员——正则表达式
- Python使用mechanize模拟浏览器
- Apache内容生成器 (1)
- 共享内存
- chartcontrol的用法总结
- 运维平台规划体系全介绍
- 黑马程序员——正则表达式详解
- Apache内容生成器2
- IIC总线协议基础1
- Sqoop2基础
- 模拟器+fiddler抓android程序包
- EasyMoney算法分析(仅作为分析记录)
- 《4》CentOS7.0+OpenStack+kvm云平台部署—配置Nova
- 初试IDEA插件开发
- Apache内容生成器3