2022-08-12 第二组刘禹彤 学习笔记
作者:互联网
打卡31天
###学习内容
正则表达式
- 从一个文章中找到所有邮箱,判断手机号是否合法,远征各种数据的格式是否合法
又叫做规则表达式(Regular Expression Regex)
判断字符串,核心功能处理文本
正则表达式不局限于某一种语言
- 元字符
构建正则表达式
.:除了换行符之外的任意字符
\w:匹配子符或者数字或者下划线
\s:空格
\d:匹配数字
\b:匹配单词的开始或结束
^:匹配字符串的开始或结束
$:匹配字符串的结束
匹配8位QQ号:^\d\d\d\d\d\d\d\d$
匹配手机号:^1\d\d\d\d\d\d\d\d\d\d$
- 重复限定符
*:重复零次或更多次
+:重复一次或更多次
?:重复零次或一次
{n}:重复n次
{n, }:重复n次或更多次
{n,m}:重复n次到m次
银行卡号14位到18位:^\d{14,18}$
匹配以a开头,0个或多个b结尾:^ab*&
- 分组
限定符的作用与它相邻的最左边的一个字符起作用,那么问题来了
如果想要ab都被限定------正则表达式中用小括号分组,括号内会称为一个整体-----^(ab)*$
- 转义
匹配字符串中包含0到多个(ab)开头:^((\ab\))*
- 单或 |
^(130|132|136|134|135)\d{8}$
- 区间
正则表达式提供了一个中括号[]来表示区间
0~9:[0-9]
a~z:[a-z]
限定某些数字:[130]
^((13[0-2])|(18[5-6]))\d{8}$
- 反义
\W:不是数字、字母、下划线
\S:不是空格
\D:不是数字
\B:不是单词开头或结束
[^x]:除了x以外的任意字符
[^vbbn]:除了。。。
- 常见正则表达式
匹配中文的字符:[],匹配的是ASCII码
邮箱fdfg-@ddsdnj------^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
中国内地电话0431-81254652 010-81235689----^\d{3,4}-\d{8}$
身份证号
- 转义字符
打印\不行。要打印两个,第一个是转义字符,打印每一个都要新加\
Pattern类
Matcher类
PatternSyntaxException类
###学习心得
JAVASE的学习已经进入了尾声,整体下来感觉内容很多,环环相扣,需要几天来进行消化理解
###掌握情况:一般
###课上练习
import org.junit.Test; import java.util.Arrays; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; /** * Pattern类 * Matcher类 * PatternSyntaxException类 */ public class Ch02 { @Test public void test06() { String regex = "[-_]"; String str = "123-4756_qweqwe-7987_465"; String[] split = str.split(regex); System.out.println(Arrays.toString(split)); } @Test public void test05(){ String regex = "\\d"; String str = "1111c2222d456456456f465gh987897"; String s = str.replaceAll(regex, "@"); System.out.println(s); } @Test public void test04() { String regex = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; String email = "175367745@qq.com"; System.out.println(email.matches(regex)); } @Test public void test03() { String regex = "a"; String str = "cat cat dog dog cat"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); // 统计cat在字符串中出现的次数 int count = 0; System.out.println(matcher.find(str.length() - 1)); while(matcher.find()){ count++; } System.out.println("出现了" + count + "次"); } @Test public void test02() { String regex = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; String email = "175367745@qq."; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(email); System.out.println(matcher.matches()); } @Test public void test01() { String str = "hello,i am from jilin changchun!"; // 必须包含jilin String pattern = ".*jilina.*"; boolean b = Pattern.matches(pattern,str); System.out.println("字符串中是否包含了jilin:" + b); } }
###运行结果
标签:regex,12,String,08,zA,_-,刘禹彤,str,Z0 来源: https://www.cnblogs.com/lyt0612/p/16580630.html