【1.0 Regular Expressions 正则表达式】
【概念】
RegEx
正则表达式是一种特殊的字符序列,可帮助您使用专门的模板语法,来匹配对应的匹配方法或字符串组
它们可用于搜索,编辑或操纵文本和数据
正则表达式通常用于验证输入和检索信息
比如我们要寻找一个"car",那么在下面几种情况都可以利用正则表达式:
1.car 作为独立的一个单词出现
2.car 是某个单词的一部分,比如说carton就是含"car"的单词
3.car 中c,a,r按顺序出现在一个单词里面,比如,chandler
可以认为,RegExV是用广泛使用的正式语言写的,一种简洁的字符串匹配方法
【使用】
使用RegEx的方法主要是使用matches(),比如
boolean bool = "abbbb" . matches("ab8")
如你所见,这个方法会得到一个boolean值
下面演示几种用法,problem代表要检查的语句,可以直接使用string
"problem".matches(RegEx)
“abc”.matches(“abc”)
“Abc”.matches(“Abc”)
“Abc”.matches(“abc”) //false
“aabbaba”.matches(“[ab]*”)
“aabbaba”.matches(“a[ab]*”)
“bbaba”.matches(“a[ab]*”)//false
【语法】
1.完全相连的字母,比如abc,需要完全匹配(含大小写)
2.用[]括起来的,代表可以用[]里面的其中一个字母代替,同样适用于大小写的替代,比如[Dd]
比如ca[bdn],就可以用cab,cad,can来匹配
3.使用^代表Not,非
比如,ca[^brt],就 不能 用cab,car,cat匹配
此外,^不可以被用于匹配第一个字符
【语法:范围】
[a-z] 任意小写字母
[A-Z] 任意大写字母
[aA-zZ] 任意大小写字母
[0-9] 任意数字
[a-z&&[^xyz]] 从a-z,但是不含x,y,z
[a-zA-Z0-9] 任意大小写字母或数字
【语法:数量】
:代表出现0次/没有出现,或者出现很多次,比如
ab a ab abb abbbb
[ab]* aa aabbababbaaabbabaabba bbba
+:出现一次或者很多次
ab+ ab abb abbbb
?:代表出现0次或者一次
Colou?r Colour Color (?作用于u)
【语法:“清点”】
x{3} // 只有xxx
x{3,} // 大于等于三次就可以xxx xxxxxxxxxxxx...
x{2,4} // 有两次到四次都可以,xx, xxx and xxxx
.[a-z]{2,4} //代表这从点. 开始,后跟2-4的字母,比如 (.ie .com .info)
【语法:通配】
点, .是通配符,它允许字符串中的任何字符(除了换行符也就是回车)
re.d //匹配 read reed rezd
【语法:反斜杠与特殊字符】
使用反斜杠,会让“反斜杠后跟的特殊字符”变成“普通字符”,
比如.和\. 后者就是普通字符的意思
"www.4399.com".matches("www\\.[a-zA-z]+||.[a-z]{2,4}")
按理来说,只要.就可以代表普通字符点.了,那么为什么需要两个斜杠呢,见下方的“单词word”部分
•“ab”c” 需要写成 “ab\”c”
•“ab””c” 需要写成 “ab\”\”c”
•“ab\c” 需要写成 “ab\c”
•“ab\c” 需要写成 “ab\\c”
【语法:单词word】
反斜杠\加上字符是一个特殊字符,“单词word”是字母数字字符和下划线的非空序列
“the backslash \character is a special character. It means, do Not treat the following character in the normal way”
“反斜杠\字符是一个特殊字符。它的意思是,不要以正常的方式输入下面的字符”(\.就是这个原因)
“ \\.实际上被转义为两次,\\在java中被转换为一个'\'字符,然后'\.'被传给正则,\.表示对点字符进行转义,使.就表示字符'.',而不使用它在正则中的特殊意义”
就像上面这句话,实质上在预览中只看得到两个斜杠一个点,两个斜杠,一个斜杠,一个斜杠一个点,一个斜杠一个点。这里也利用了类似的办法是反斜杠变成了普通字符
. 句号,停止符号。另外这个规则意味着如果我们想要匹配一个点,需要输入"\."
\b 词语边界
\s 空格
\ 反斜杠与字符
\t 制表字符
\d 数字
\w word字符
【PDF里面的列表图片,24页】
【java.util.regexpackage】
以下内容需要配合java.util.regexpackage使用,也算可以先不看的额外内容
Pattern Class :Pattern对象是正则表达式的编译表示,Pattern类不提供公共构造函数。要创建一个pattern,必须首先调用其公共静态compile()方法之一,然后再返回一个Pattern对象,这些方法接受正则表达式作为第一个参数
Matcher Class : Matcher对象是解释模式并针对输入字符串执行匹配操作的引擎,与Pattern类一样,Matcher也没有定义公共构造函数。您可以通过在Pattern对象上调用matcher()方法来获得Matcher对象
PatternSyntaxException: 指示正则表达式模式中的语法错误的未检查的异常
捕获组Capturing Groups:
捕获组是将多个字符视为一个单元的一种方式。通过将要分组的字符放在一组括号中来创建它们。
例如,正则表达式(dog)创建一个包含字母“ d”,“ o”和“ g”的单个组
捕获组的编号是从左到右计算它们的开括号
((A)(B(C)))有四个组,((A)(B(C))) , (A) ,(B(C)) ,(C)
groupCount():
为了找出表示该表达式中有多少个组,请调用“ groupCount”方法匹配对象。“ GroupCount”方法返回i\一个int,以显示该匹配器模式matcher'spattern中存在的捕获组数
还有一个特殊的组,组0,始终代表整个表达式。该组不包括按组计数报告的总数。
(更多方法和实例详见PDF的27 - 41 页)
(编写这部分内容的时候,对markdown还不够熟练,可能有bug,请指出)
【1.0 Regular Expressions 正则表达式】的更多相关文章
- 自学Zabbix8.1 Regular expressions 正则表达式
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix8.1 Regular expressions 正则表达式 1. 配置 点击Adm ...
- Regular Expressions --正则表达式官方教程
http://docs.oracle.com/javase/tutorial/essential/regex/index.html This lesson explains how to use th ...
- 正则表达式(Regular expressions)使用笔记
Regular expressions are a powerful language for matching text patterns. This page gives a basic intr ...
- 正则表达式备忘录-Regular Expressions Cheatsheet中文版
正则表达式备忘录Regular Expressions Cheatsheet中文版原文:https://www.maketecheasier.com/cheatsheet/regex/ 测试文件a.t ...
- Python之Regular Expressions(正则表达式)
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 很可能你使用过Windows/Dos下用 ...
- 转载:邮箱正则表达式Comparing E-mail Address Validating Regular Expressions
Comparing E-mail Address Validating Regular Expressions Updated: 2/3/2012 Summary This page compares ...
- Regular Expressions in Grep Command with 10 Examples --reference
Regular expressions are used to search and manipulate the text, based on the patterns. Most of the L ...
- Introducing Regular Expressions 学习笔记
Introducing Regular Expressions 读书笔记 工具: regexbuddy:http://download.csdn.net/tag/regexbuddy%E7%A0%B4 ...
- 【Python学习笔记】Coursera课程《Using Python to Access Web Data 》 密歇根大学 Charles Severance——Week2 Regular Expressions课堂笔记
Coursera课程<Using Python to Access Web Data > 密歇根大学 Charles Severance Week2 Regular Expressions ...
随机推荐
- yaml配置和ini配置的数据源配置和数据获取
1.前言 关于yaml和ini的相关理论暂不做记录,不影响代码编写,百度即可. 2.关于配置文件的选择 yaml 和 ini 都使用过, 但是yaml更符合人类使用,已要弃用ini,后期各项目均采用y ...
- python的with用法(转载)
原文地址:https://www.cnblogs.com/wanglei-xiaoshitou1/p/9238275.html 一.with语句是什么? 有一些任务,可能事先需要设置,事后做清理工作. ...
- sklearn中的pipeline的创建与访问
前期博文提到管道(pipeline)在机器学习实践中的重要性以及必要性,本文则递进一步,探讨实际操作中管道的创建与访问. 已经了解到,管道本质上是一定数量的估计器连接而成的数据处理流,所以成功创建管道 ...
- Java 线程间通信 —— 等待 / 通知机制
本文部分摘自<Java 并发编程的艺术> volatile 和 synchronize 关键字 每个处于运行状态的线程,如果仅仅是孤立地运行,那么它产生的作用很小,如果多个线程能够相互配合 ...
- Hive-常见调优方式 && 两个面试sql
Hive作为大数据领域常用的数据仓库组件,在设计和开发阶段需要注意效率.影响Hive效率的不仅仅是数据量过大:数据倾斜.数据冗余.job或I/O过多.MapReduce分配不合理等因素都对Hive的效 ...
- WPF权限控制框架——【4】抛砖引玉
写第一篇"权限控制框架"系列博客是在2021-01-29,在这不到一个月的时间里,收集自己零碎的时间,竟然写出了一个"麻雀虽小,五脏俱全"的权限控制框架:对于一 ...
- C#语言特性及发展史
本文按照C#语言的发展历史,介绍C#每个版本的新增特性,主要参考微软官方文档.了解这些语言特性可以帮助我们更高效的编写C#代码. C# 1.0 与Visual Studio .NET 2002一起发布 ...
- Django Static与Media
关于Django中Static和Media的设置问题(尤其是css和js静态文件加载的问题),网上有很多回答,但是发现有相当一部分回答并不能解决问题.有的可能是Django版本问题,有的是把media ...
- nacos服务注册与发现之客户端
服务注册 1.1 NamingService.registerInstance的方法为客户端提供的服务注册接口 1.2 客户端通过调用NamingService.registerService上报到n ...
- 最近没事DIY了个6通道航模遥控器
在网上买了个外壳,挖空后换成自己的电路版. 开机后图: 液晶屏是320x240的,没有合适的贴纸,直接就这么用了 遥控器的内部电路有点乱哈,没办法,低成本就只能全靠跳线了 还好都能正常工作. 接收器也 ...