【JavaSE_学习笔记】正则表达式

正则表达式常用的语法:
A:字符

符号 意义 注意事项
x 字符 x :任意的字符
\\ 反斜线字符 在代码中书写正则表达式:——>用两个\代表一个反斜线
\t 制表符 (‘\u0009’)
\n 新行(换行)符 (‘\u000A’) IO流中要写入换行符号:windows “\r\n”
\r 回车符 (‘\u000D’)

B:字符类

符号 意义
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) :当前字母大小均可

C:预定义字符类

符号 意义 注意事项
. 任何字符 邮箱里面:如果本身就是.,那么在写正在表达式的时候,.将当前.转义
\d 数字:[0-9] \d在正则表达式应用的时候:[0-9]—>\d
\w 单词字符:[a-zA-Z_0-9] 简单一些字符串,单词字符(规则:数字或者字母)

D:边界匹配器

符号 意义
^ 行的开头
$ 行的结尾
\b 单词边界

E:Greedy 数量词

符号 意义
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

举例:
1.校验QQ号码

import java.util.Scanner;/*** 需求:校验一个QQ号码*      定义一个规则:1)由5到10为组成的数字*                2)不能以0开头  *  分析:*      1)键盘录入一个QQ号码,使用字符串接收*      2)定义一个校验QQ的功能*      3)在main()中调用返回boolean类型* @author Apple*/
public class RegexDemo2 {public static void main(String[] args) {//创建键盘了录入对象Scanner sc = new Scanner(System.in) ;//录入并接收数据System.out.println("请您输入QQ号码: ");String QQ = sc.nextLine() ;boolean flag = checkQQ(QQ) ;System.out.println("flag: "+flag);}public static boolean checkQQ(String qq){/*//定义正则规则String regex = "[1-9][0-9]{4,9}" ;//public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。 boolean flag = qq.matches(regex) ;return flag ;*///直接返回return qq.matches("[1-9]\\d{4,9}");}
}

2.校验邮箱

import java.util.Scanner;/*** 需求:校验邮箱:*      QQ邮箱:*          919081924@qq.com*          fengqingyang@163.com*          xxxxx@126.com*          zhangsan@westos.com*          lisi@sina.com*          wangwu@istone.com.cn....* 分析:1)键盘录入邮箱*      2)定义正则规则*      3)使用String中的特有功能校验*      4)输出即可* @author Apple*/
public class RegexTest {public static void main(String[] args) {//创建键盘录入对象Scanner sc = new Scanner(System.in) ;//录入并接收System.out.println("请您输入一个邮箱:");String email = sc.nextLine() ;//定义正则规则:本身就是.-->\.--->\\.
//      String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\\.[a-zA-Z]{2,3})+" ;String regex = "\\w+@\\w{2,6}(\\.[a-zA-Z]{2,3})+" ;//校验boolean flag = email.matches(regex) ;System.out.println("flag:"+flag);}
}

String中与正则表达式有关的方法:
  public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串,返回值类型是一个字符串数组类型
举例:

public class RegexDemo2 {public static void main(String[] args) {//定义个字符串String str1 = "aa,bb,cc" ;//使用分割功能String[] strArray1 = str1.split(",") ;//遍历字符串数组for(int x = 0 ; x < strArray1.length; x ++){System.out.println(strArray1[x]);}System.out.println("------------------");//字符串:String str2 = "aa       bb                    cc" ;//使用切割功能:String[] strArray2 = str2.split(" +") ;for(int x = 0 ; x <strArray2.length ; x++){System.out.println(strArray2[x]);}System.out.println("--------------------");String str3 = "aa.bb.cc" ;//分割功能String[] strArray3 = str3.split("\\.") ;for(int x =0 ; x<strArray3.length ; x ++){System.out.println(strArray3[x]);}//硬盘上的路径表现形式:用两个反斜线代表一个反斜线//E:\\JavaSE\\JavaCode\\day13String str4 = "E:\\JavaSE\\JavaCode\\day13" ;//使用分割功能String[] strArray4 = str4.split("\\\\") ;for(int x = 0 ; x <strArray4.length ; x ++){System.out.println(strArray4[x]);}}
}

  public String replaceAll(String regex,String replacement)
    使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
举例:

public class RegexDemo3 {public static void main(String[] args) {//定义一个字符串:String str = "helloword123JavaSE45678Javaweb" ;//需求:让当前这个字符串中的数字不显示出来//定义当前大串中数字定义正则规则
//      String regex = "[0-9]+" ;String regex = "\\d+" ;String s = "*" ;//public String replaceAll(String regex,String replacement)String result = str.replaceAll(regex, s) ;System.out.println("result:"+result);}
}

模式与匹配器:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo4 {public static void main(String[] args) {//public static Pattern compile(String regex)将给定的正则表达式编译成一个模式对象//1)获取模式对象(通过正则规则)Pattern p = Pattern.compile("a*b") ;//2)通过模式获取匹配器对象,(将一个字符串类型的数据)Matcher m = p.matcher("aaaaaab") ;//3)调用Match(匹配器类)中的:public boolean matches():判断当前用户录入的字符串是否和当前的正则规则匹配boolean flag = m.matches() ;System.out.println("flag:"+flag);System.out.println("----------------------------");//上述写法非常麻烦,要获取模式对象Pattern还要获取匹配器对象:Matcher,然后通过matches()方法返回一个结果//以后可以使用下面这种格式//定义一个正则规则String regex = "a*b" ;//指定某一个字符串String str = "aaaaaaab" ;//使用String类的功能//使用当前给定的字符串调用public boolean matchers(String regex)boolean flag2 = str.matches(regex) ;System.out.println("flag2: "+flag2);}
}

【JavaSE_学习笔记】正则表达式相关推荐

  1. python学习笔记 正则表达式 详解2

    python学习笔记 正则表达式 详解 行定位符 行定位符就是用来描述子串的边界."^"表示行的开始:"$"表示行的结尾 ^tm:匹配以子串tm的开始位置是行头 ...

  2. python正则表达式快速入门_Python学习笔记——正则表达式入门

    标签: # 本文对正则知识不做详细解释,仅作入门级的正则知识目录. 正则表达式的强大早有耳闻,大一时参加一次选拔考试,题目就是用做个HTML解析器,正则的优势表现得淋漓尽致.题外话不多讲,直接上干货: ...

  3. Go语言学习笔记——正则表达式

    文章目录 Golang正则表达式 Golang正则表达式语法 单一 复合 重复 分组 位置标记 转义序列 可以将"命名字符类"作为"字符类"的元素 `Perl ...

  4. Java学习笔记-正则表达式的模式匹配

    正则表达式(Regex)为被匹配的文本模式提供了简明扼要的规范. 关于正则表达式的语法,可以参考相关书籍和这个网址:http://edu.yesky.com/edupxpt/18/2143018.sh ...

  5. 《python自动化》学习笔记:正则表达式基础知识

    模式匹配与正则表达式 匹配步骤: 1用 import re 导入正则表达式模块 2.用 re.compile()函数创建一个 Regex 对象 ​ 3.向 Regex 对象的 search()方法传入 ...

  6. C#学习笔记 正则表达式

    正则表达式是用来表示字符串模式的表达式,如[0 - 9]{4}表示4个数字,可以认为它是复杂的通配符,它主要用来从文中查找到某一类字符串. 1.正则表达式的基本元素 正则表达式实际上是用来匹配某种格式 ...

  7. 学习笔记-正则表达式-用正则匹配换行和空格的坑

    (菜鸟小白总结,不喜勿入) 今天用爬了个网站,结果里面数据没用xpath提取到,感到迷惑,所以不得已用了正则表达式,要匹配的信息如下: <span class="item-compan ...

  8. Java学习笔记——正则表达式(Pattern类、Matcher类和PatternSyntaxException)

    目录 一.Pattern类 (一)Pattern 介绍 (二)Pattern 方法 二.Matcher类 (一)Matcher 类介绍 (二)Matcher 类方法 三.PatternSyntaxEx ...

  9. 正则表达式必知必会学习笔记

    正则表达式必知必会学习笔记 @(正则表达式)[regex,正则表达式,正则] 基本概述 <正则表达式必知必会>是一本很薄的书,花了两个小时左右将全书通读了一遍.这本书基本将正则表达式的常用 ...

最新文章

  1. Sublime text3 快捷方式(windows平台)
  2. 荔枝FM 字体文件 IconFontTextView
  3. Python 这么火,如何快速掌握?
  4. 今日头条算法原理(全文)【转】
  5. 为什么喜欢听钢琴+小提琴
  6. FlowDocumentPageViewer
  7. 微信小程序 +第三方 直播-IM在线聊天
  8. 华为服务器设备型号查询,查看服务器机器型号
  9. android打开word
  10. matlab求解全微分函数,Matlab求解一元函数,再求全微分的错误,表达式复杂不会........
  11. 中文 Uncode 编码范围
  12. linux中安装apr
  13. Homekit智能通断器
  14. IDEA前进后退快捷键设置
  15. 相机标定matlab版本,相机标定 matlab
  16. 用ipad给linux做第二屏幕,让iPad变成你电脑的第二显示屏,无论工作还是生活都相当实用!...
  17. 计算机代码画玫瑰,如何用代码画一朵玫瑰花
  18. 唐伯虎的诗,可能是改编的
  19. day 11/6 英语词汇
  20. python里randint是什么意思_Python中random.randint方法(精选)

热门文章

  1. RecyclerView的极尽升华:BaseRecyclerViewFragment(修改)
  2. RecyclerView的极尽升华:BaseRecyclerViewFragment
  3. android动画图片从中间放大
  4. win10网络只有飞行模式的问题
  5. 解决Win10只有飞行模式,没有WLAN图标
  6. 【C++】: 构造函数和析构函数的区别?
  7. Spine 由PSD导入
  8. 怎样在外网登录访问CRM管理系统?
  9. 海外服务器上传文件太慢,怎么办?
  10. PTA-python练习题-1