###学习心得###
正则表达式不局限于某一种语言,有元字符,还有重复限定符,能转义,还有反义的,也有区间
###心情###🤣🤣🤣
今天的正则表达式还算好理解,就是记住就行,和以前学的东西有相似之处
掌握情况:还行,今天复习时间较长
正则表达式
从一个文章中找到所有的邮箱,看看输入的手机号是否合法(身份证号)。
又叫做规则表达式,Regular Expression Regex
判断字符串,核心功能处理文本
正则表达式不局限于某一种语言。
元字符:😎😎
. |
匹配除了换行符之外的任意字符 |
\w |
匹配字符或数字或下划线或汉字 |
\s |
空格 |
\d |
匹配数字 |
\b |
匹配单词的开始或结束 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
重复限定符:😎😎
* |
重复零次或更多次 |
+ |
重复一次或更多次 |
? |
重复零次活一次 |
(n) |
重复n次 |
{n,} |
重复n次或更多次 |
{n,m} |
重复n到m次 |
分组🎉🎉
限定符的作用与它相邻的最左边的一个字符起作用,那么问题来了
如果我想ab同时被限定怎么办?
正则表达式中可以用小括号来分组,括号内的内容会作为一个整体。
^(ab)*$
转义🎃🎃
匹配字符串中包含0到多个(ab)开头:^((\ab\))*
条件
手机号有下面这些开头
联通:130 131 132 134 155 156 185 186
匹配一个联通的手机号,或
| 单或
联通手机号: ^(130|131|134|155|156|185|186)\d{8}$
区间
正则表达式提供了一个[ ] 来表示区间
0~9:[0-9]
A~Z:[A-Z]
限定某些数字:[130]
^( (13 [ 0-2 ] ) | ( 15 [ 5-6 ] ) | ( 18 ( 5-6 ) ) ) \ d { 8 } $和上面手机号意思一样,写法不一样
反义:🎀🎀
\W |
不是字母数字下划线中文 |
\S |
不是空格 |
\D |
不是数字 |
\B |
不是单词开头或结尾 |
[^X] |
除了x以外的任意字符 |
[^aeiou] |
匹配不是aeiou的任意字符 |
常见的正则表达式:
匹配中文的字符:[ ] ,匹配的ASCII码
例如邮箱123456789rbxp@qq.com
邮箱:^[a-z A-Z 0-9 _ -] + @ [ a-z A-Z 0-9 _ - ]+( \.[a-z A-Z 0-9 _ -]+)+$
国内的电话号码:0431-81234567 010-81234567 021-81234567
^\d { 3,4 } - \d { 8 } $
QQ号:^[ 1-9 ] [ 0-9 ] { 4-11 }$
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); } }
----------------------------------------------------------
----------------------------------------------------------
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现