2022-8-12第一组孙乃宇正则表达式
2022/8/12 23:57:52
本文主要是介绍2022-8-12第一组孙乃宇正则表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
正则表达式
正则表达式是由一些具有特殊含义的字符组成的字符串,多用于查找、替换符合规则的字符串。在表单验证、Url映射等处都会经常用到。
又叫规则表达式,regular Expression Regex 判断字符串 核心功能处理文本
正则表达式不局限于某种语言,
元字符:
. | 匹配除了换行符之外的任意字符 |
---|---|
\w | 匹配字母或数字或下划线或汉字 |
\s | 代表空格 |
\d | 匹配数字 |
\b | 匹配单词的开头或结束 |
^ | 匹配字符串的开始 |
\$ | 匹配字符串的结束 |
例子
正则表达式使用^开头用$结尾
匹配8位数字的QQ号:^\d\d\d\d\d\d\d\d$
匹配1开头11位数字:^1\d\d\d\d\d\d\d\d\d\d$
但是这么些有些麻烦,所以就有了重复限定符
重复限定符
* | 代表重复0次或者更多次 |
---|---|
+ | 重复1次或更多次 |
? | 重复0次或1次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
这样的正则表达式就变短了
匹配8位数字的QQ号: ^\d{8}$
匹配1开头11位数手机号:^1\d{10}$
银行卡号13~18位:^\d{14,18}$
匹配以a开头,0个或多个b结尾的字符串:^ab*$
分组
限定符的作用与它相邻的最左边的一个字符起作用,
如果想要ab同时被限定怎么办?
正则表达式中可以用小括号分组,括号里的内容会作为一个整体。
如:^(ab)*$
转义
匹配字符串中包含0到多个ab开头的;^((\ab))*
| 或
如:联通手机号:^(130|131|132|134|186)\d{8}$
区间
正则表达式提供了一个[]表示区间
0~9:[0-9]:表示0到9
A~Z:[A-z]:表示A到Z
反义
\W:不是字母、数字,下划线、中文
\S:不是空格
\D:不是数字
\B:不是单词开头或结束
[^x]:除了x以外的任意字符
[^aeiou]:匹配除了aeiou的任意字符
常见的正则表达式:
正则表达式匹配中文式匹配的ASCⅡ码
邮箱:^[a-zA-Z0-9-][email protected][a-zA-Z0-9-]+(.[a-zA-Z0-9_-]+)+$
国内的电话号码如:0431-81234567 ^\d[3,4]-\d[8]$
QQ号: ^[1-9][0-9]{4,11}$
java中操作正则表达式
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 test01() { String str = "hello,i am from jilin changchun!"; // 必须包含jilin String pattern = ".*jilina.*"; boolean b = Pattern.matches(pattern,str); System.out.println("字符串中是否包含了jilin:" + b); } @Test public void test02() { String regex = "^[a-zA-Z0-9_-][email protected][a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; String email = "[email protected]"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(email); System.out.println(matcher.matches()); } @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 test04() { String regex = "^[a-zA-Z0-9_-][email protected][a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; String email = "[email protected]"; System.out.println(email.matches(regex)); } @Test public void test05(){ String regex = "\\d"; String str = "1111c2222d456456456f465gh987897"; String s = str.replaceAll(regex, "@"); System.out.println(s); } @Test public void test06() { String regex = "[-_]"; String str = "123-4756_qweqwe-7987_465"; String[] split = str.split(regex); System.out.println(Arrays.toString(split)); } }
这篇关于2022-8-12第一组孙乃宇正则表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-11正则表达式学习:入门指南与实践技巧
- 2024-08-15正则表达式入门:基础教程与实践指南
- 2024-01-0939. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换
- 2024-01-08如何编写高效的正则表达式?
- 2023-12-29"Matlab中的正则表达式:强大而灵活的工具"
- 2023-09-30这个正则 为啥同样的单号第二个就提取不出来?
- 2023-06-086.2 re 正则表达式
- 2023-06-06将字符串里的\x01,\x02这些替换掉用正则表达式无效?
- 2023-05-24正则表达式详解
- 2023-05-17我让gpt写了一段正则表达式代码,可是运行报错,可以帮忙看看哪里出了问题?