$Java正则表达式基础整理
(一)正则表达式及语法简介
- String类使用正则表达式的几个方法:
- 正则表达式支持的合法字符:
- 特殊字符:
- 预定义字符:
- 方括号表达式:
- 圆括号表达式:用于将多个表达式组成一个子表达式,可以使用或运算符“|”,比如正则表达式:"(aa|bb|cc)"就表示匹配"aa"、"bb"、"cc"三个字符串中的其中一个。
- 边界匹配符:
- 贪婪、勉强、占有模式的数量标识符:
(二)Java正则表达式的简单用法
- 两个关键类:(1)Pattern:正则表达式编译后在内存中的表示形式。是不可变类,可供多个线程并发使用;(2)Matcher:保存执行匹配所涉及的各种状态,多个Matcher对象可以共享一个Pattern对象。
- 简单用法程序示例:
- System.out.println(Pattern.matches("a\\wb", "a_b")); // 输出:true
- Pattern p = Pattern.compile("a*b");
- Matcher m = p.matcher("aabzaaadaaafbc");
- System.out.println(m.matches()); // 输出:false
- System.out.println(Pattern.matches("a\\wb", "a_b")); // 输出:true
Matcher类的常用方法:
- 程序举例:
- public static void test1() {
- System.out.println(Pattern.matches("a\\wb", "a_b")); // 输出:true
- Pattern p = Pattern.compile("a*b");
- Matcher m = p.matcher("aabzaaadaaafbc");
- System.out.println(m.matches()); // 输出:false
- System.out.println(m.find()); // 输出:true
- System.out.println(m.group()); // 输出:b
- System.out.println(m.start()); // 输出:2
- System.out.println(m.end()); // 输出:3
- System.out.println(m.lookingAt()); // 输出:true
- m.reset("zab");
- System.out.println(m.lookingAt()); // 输出:false
- }
- public static void test2() {
- Matcher m = Pattern.compile("\\w+").matcher("Java is very easy!");
- while (m.find()) {
- System.out.println(m.group() + "子串的起始位置:" + m.start() + ",结束位置:"
- + m.end());
- }
- int i = 0;
- while (m.find(i)) {
- System.out.print(m.group() + "\t");
- i++;
- }
- // 输出:
- // Java子串的起始位置:0,结束位置:4
- // is子串的起始位置:5,结束位置:7
- // very子串的起始位置:8,结束位置:12
- // easy子串的起始位置:13,结束位置:17
- // Java ava va a is is s very very ery ry y easy easy asy sy y
- }
- public static void test3() {
- String[] mails = { "Jiayongji@163.com", "Jiayongji@gmail.com",
- "jy@hust.org", "wawa@abc.cc" };
- String mailRegEx = "\\w{3,20}@\\w+\\.(com|cn|edu|org|net|gov)";
- Pattern mailPattern = Pattern.compile(mailRegEx);
- Matcher mailMatcher = null;
- for (String mail : mails) {
- if (mailMatcher == null) {
- mailMatcher = mailPattern.matcher(mail);
- } else {
- mailMatcher.reset(mail);
- }
- System.out.println(mail + (mailMatcher.matches() ? "是" : "不是")
- + "一个合法的邮箱地址");
- }
- // 输出:
- // Jiayongji@163.com是一个合法的邮箱地址
- // Jiayongji@gmail.com是一个合法的邮箱地址
- // jy@hust.org不是一个合法的邮箱地址
- // wawa@abc.cc不是一个合法的邮箱地址
- }
- public static void test4() {
- Matcher m = Pattern.compile("\\bre\\w*").matcher(
- "Java is real good at inrestart and regex.");
- System.out.println(m.replaceAll("哈哈"));
- // 输出:
- // Java is 哈哈 good at inrestart and 哈哈.
- }
- public static void test1() {
Refer:《疯狂Java讲义(第二版)》
(完)
随机推荐
- centos6.5下redis集群配置(多机多节点)
可参考官网文档:redis集群配置 需要注意的是,集群中的每个节点都会涉及到两个端口,一个是用于处理客户端操作的(如下介绍到的6379/6380),另一个是10000+{监听端口},用于集群各个节点间 ...
- linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录 3.网络文件系统的文件,4.字符设备文件 5.(函数)共享库 6.管道,命名管道 7.符号链 ...
- Sphinx 安装与使用(1)-- 安装Coreseek
Coreseek就是Sphinx的中文版 官方网站 http://www.coreseek.cn/ 一.安装 1.修改LANG 永久修改: vim /etc/locale.conf LANG=&quo ...
- Java进阶03 IO基础(转载)
IO示例 下面是演示的文件file.txt Hello World! Hello Nerd! 先来研究一个文件读取的例子: import java.io.*;public class Test{ pu ...
- void bind(String sName,Object object);――绑定:把名称同对象关联的过程
void bind(String sName,Object object);――绑定:把名称同对象关联的过程 void rebind(String sName,Object object);――重新绑 ...
- 集合Map映射(使用xml文件)
Hibernate允许我们将Map元素与RDBMS进行映射. 我们知道,List和Map是基于索引的集合. 在map的情况下,索引列作为键,元素列用作值. 使用xml文件在集合映射中映射Map的示例 ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的音频alsa 采集
1.snd_pcm_open,打开句柄. 2.配置参数,可能用到的接口:snd_pcm_hw_params_alloca.snd_pcm_hw_params_any.snd_pcm_hw_params ...
- week 5: ;Lasso regression & coordinate descent
笔记. 岭回归, 计算回归系数时使( RSS(w)+λ||w||2) 最小 岭回归的结果会是所有的特征的weight都较小,但大多数又不完全为零. 而实际情况中,有的特征的确与输出值相关程度很高,we ...
- 绝对定位position: absolute;
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- The server encountered an internal error that prevented it from fulfilling this request.(JsonMappingException: Conflicting getter definitions)
在测试一个方法,dubug查看查询结果已经出来了,结果页面上是The server encountered an internal error that prevented it from fulfi ...