首页 > 其他分享 >正则表达式

正则表达式

时间:2023-03-23 16:46:49浏览次数:54  
标签:匹配 正则表达式 模式 matches 字符串 java

正则表达式\((regular\ expression)\)

正则表达式是一个字符串,用来描述匹配一个字符串集合的模式,可以使用正则表达式来匹配、替换和拆分字符串

匹配字符串

我们先来看一下\(String\)类中的\(matches\)方法,它可以判断字符串\(s\)和字符串\(t\)是否匹配下面两个语句的结果都为\(true\):

"java".matches("java"); // true
"java".equals("java"); // true

在上面的样例中,\(matches\)方法匹配了一个固定的字符串,但是实际上\(matches\)方法还可以匹配符合一个模式的字符串集,例如:

"java is good".matches("java.*"); // true
"java are you".matches("java.*"); // true
"javacanyou".matches("java.*"); // true

样例中的“java.*”是一个正则表达式,他描述了一个字符串模式:以java为前缀,后面跟着若干个字符串(可能是0个),“.*”代表匹配0或任意多个字符

正则表达式语法

正则表达式由字面值字符和特殊字符组成


注意事项:

  1. 单词字符可以是任何字母、数字或者下划线字符,即\w 等价于 \([a-z[A-Z][0-9]\_]\)
  2. 量词符:* + ? {n} {n,} {n,m},用于确定量词符前面的模式串会重复多少次
  3. *:代表前面的模式串出现任意次(包括0)
  4. +:代表前面的模式串至少出现1次
  5. ?:代表前面的模式串只能出现0次或1次
  6. {n}:代表前面的模式串只能出现n次
  7. {n,}:代表前面的模式串至少出现n次
  8. {n,m}:代表前面的模式串只能出现n次到m次之间
  9. 不要在重复量词符中使用空白
  10. 可以利用括号将模式串进行分组
  11. .*:代表任意字符串

替换和拆分字符串

除了\(matches\)方法,\(String\)类也包含\(replaceAll,replaceFirst,split\)方法,用于替换和拆分字符串

str.replaceAll(regex,String s); // 替换str中所有的能够匹配模式串的子串为字符串s
str.replaceFirst(regex,String s); // 替换str中第一个能够匹配模式串的子串为字符串s
String tokens = str.spict(regex,limit); //代表将字符串str以模式串为分隔符进行分割,limit确定匹配分割符的次数(分割的次数),默认贪心匹配,匹配尽量多的分隔符,如果limit>1,代表最多匹配limit-1次

注意:

  • 所有的量词符匹配时都是贪心的,他们会尽可能多匹配,但是我们可以在其后面添加问号来使得量词符变得懒惰,也就意味着只要第一次匹配成功就退出匹配

标签:匹配,正则表达式,模式,matches,字符串,java
From: https://www.cnblogs.com/Zeoy-kkk/p/17247988.html

相关文章

  • 正则表达式
    正则表达式:用特殊符号表达,符号属于通用符号基本正则:优点:兼容性强 缺点:繁琐处理单位是一个符号^//匹配行首$//匹配行尾^$......
  • 正则表达式matcher.group用法
    原来,group是针对()来说的,group(0)就是指的整个串,group(1)指的是第一个括号里的东西,group(2)指的第二个括号里的东西。 最近学习正则表达式,发现Java中的一些术语与其他地方描述的有......
  • 正则表达式注意事项
    问题正则表达式一段时间不常用就经常忘掉,这里记录一下容易忘掉的知识点。?=和?:和?!和?<=和?<!要理解?=和?!,首先需要理解前瞻,后顾,负前瞻,负后顾四个概念://前瞻:e......
  • Python中使用正则表达式以及正则表达式匹配规则
    ​1导库importre2使用模板re_pattern=re.compile(pattern,flags=0)result=re.findall(re_pattern,string)3说明参数描述pattern匹配的正则......
  • 正则表达式
    [0,1]^[01]$[3,100]^[3-9]$|^(?:[1-9]\\d|100)$[1,1000]^([1-9][0-9]{0,2}|1000)$[1,10000]^([1-9][0-9]{0,3}|10000)$[0,99]^([0-9][0-9]{0,1})$[0,......
  • javaweb-Cookie、Kaptcha、正则表达式
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录笔记以供日后回顾由于是多个视频内容混合在一起,因此只放了第一个链接视频链接知识点1.Cook......
  • 正则表达式
    pattern.split测试结果pattern.matcher测试结果......
  • 常用正则表达式
    from:cdoco/common-regex:常用正则表达式-收集一些在平时项目开发中经常用到的正则表达式。(github.com) 邮箱[email protected] 只允许英文字母、数字、下......
  • 正则表达式 <h2>kk</h2> 替换为 <h2 id="kk">kk</h2>
    `<h2>kk</h2><h2>k333k</h2>`.replace(/\<h2>(.*?)<\/h2>/g,`<h2id='$1'>$1</h2>`)后面可以是个函数`<h2>kk</h2><h2>k333k</h2>`.replace(/\<h2>(.*?)<\/h2>/g,function......
  • 正则表达式(Regular Expression)详解
    1前言正则表达式主要用于复杂文本处理,如模式匹配、格式检验、文本替换等。常用的通配符有:^,$,*,.,,-,+,?,&,|,(),[],{}2String中的split()、matches()、r......