我是靠谱客的博主 俏皮路人,最近开发中收集的这篇文章主要介绍Java日记之正则表达式(基础语法与在Java中的使用)前言一、正则表达式是什么?二、工具和基本语法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 一、正则表达式是什么?
  • 二、工具和基本语法
    • 1.匹配字符
    • 2.量词
    • 3.字符边界
    • 4.匹配模式
    • 5.分支结构
    • 6.预搜索
    • 7.使用正则表达式匹配电话或邮箱
    • 8.在Java中使用正则表达式


前言

先从工具讲起

一、正则表达式是什么?

对待正则表达式 , 应该将其看成是一门独立的语言 , 用于复杂的文本操作中提取相应规则对应的文本 , 就是通过一个规则匹配一类字符

二、工具和基本语法

工具使用找在线版的就可以 , 毕竟不会用它来写代码
下面讲讲语法

1.匹配字符

1. d 匹配任一数字 (注意这里我写的是一)
2. w 任意字母数字下划线
3. s 匹配空格或制表符或换行符
4. . 匹配除换行符以外的任一字符 
5. - 区间
6. ^ 匹配除去后接的内容之外的字符

注意 : 在Java中使用的时候 , 上述表达式都必须加上 转义 除了^-

[] 可匹配其中任一字符,:
	1.[abc@] 匹配a或b或c或@
	2.[^A-F0-3] 匹配从A~F,0~3之外的字符

2.量词

修饰匹配次数 , 举例说

1. d{6} 匹配6位数字
2. dd{6} 匹配6位数字,再加上前面的一次
3. (dd){6} 前面括号内的一组重复64. {m,n} 最少m次,最多n次 [贪婪模式]
5. {m,n}? 匹配3,取下限 [非贪婪模式]
6. {m,} 最少3,不设上限
7. ? 等价于{0,1} 相当于表达式出现0或一次
8. + d+ 数字至少出现一次
9. * 等价于{0,} 0次或任意次

3.字符边界

定义 : 匹配字符串中符合条件的位置

1. ^ 于前面的不同,是从字符串开始的地方开始匹配
2. $ 于结束的地方开始匹配
3. b 匹配一个单词的边界 即匹配位置的前后字符,不全是字母 如word空格
	在d字母,前面是r是字母,后面的空格 ,不是字符  

4.匹配模式

这里在Java中有相应的常量定义
分为单行模式(整个文本看成一个字符串) , 多行模式(每一行看成字符串) , 忽略大小写(不想解释)

5.分支结构

1. | 表示或操作
2. () 捕获组,捕获匹配来的内容
3. 反向引用 nnn 若有多个括号,()()(),1表示第一个,2表示第二个
	EG: ([a-z]1) 将内容再重复一次 (括号的匹配以左括号为准)
4. (?:exp) 非捕获组 ,匹配到的内容不保存到内存中,所以如果使用1取不到值

6.预搜索

预搜索是对位置的匹配

1. (?=表达式) 匹配以表达式结尾的字符
2. (?!exp) 匹配不以exp结尾的字符
3. ?<=exp 匹配以exp开头的字符

7.使用正则表达式匹配电话或邮箱

其实网上能找到现成的

电话号码
010-888999  0d{2,3}-d{7,9} 最少出现7次最多出现913599999999 1{35789}d{9} 第二位是35789其一,后接9位数字
邮箱
[w-]+@[a-zA-Z0-9]+(.[A-Za-z]{2,3}){1,2}
[w]+@[a-zA-Z0-9]+(.[A-Za-z]{2,3}){1,2}
w+([-+.]w+)*@w+([-.] w+)*.w+([-.]w+)*

8.在Java中使用正则表达式

使用到的类分别是PatternMatcher

public static void main(String[] args) {
		
		Pattern pattern = Pattern.compile("\w+([-+.]\w+)*@\w+([-.] \w+)*\.\w+([-.]\w+)*"); //如果是复制,Java会自动加上
		Matcher matcher = pattern.matcher("1asnfjddshbhjsdbfj 09 = 16@qq.com []");
		if(matcher.find()) { //匹配到了
			for (int i = 0; i < matcher.groupCount(); i++) {
				System.out.println(matcher.group(i));
			}
		}else {
			System.out.println("meizhaodao");
		}
		
	}

最后

以上就是俏皮路人为你收集整理的Java日记之正则表达式(基础语法与在Java中的使用)前言一、正则表达式是什么?二、工具和基本语法的全部内容,希望文章能够帮你解决Java日记之正则表达式(基础语法与在Java中的使用)前言一、正则表达式是什么?二、工具和基本语法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)
立即
投稿
返回
顶部