【概念】

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 正则表达式】的更多相关文章

  1. 自学Zabbix8.1 Regular expressions 正则表达式

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix8.1 Regular expressions 正则表达式 1. 配置 点击Adm ...

  2. Regular Expressions --正则表达式官方教程

    http://docs.oracle.com/javase/tutorial/essential/regex/index.html This lesson explains how to use th ...

  3. 正则表达式(Regular expressions)使用笔记

    Regular expressions are a powerful language for matching text patterns. This page gives a basic intr ...

  4. 正则表达式备忘录-Regular Expressions Cheatsheet中文版

    正则表达式备忘录Regular Expressions Cheatsheet中文版原文:https://www.maketecheasier.com/cheatsheet/regex/ 测试文件a.t ...

  5. Python之Regular Expressions(正则表达式)

    在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 很可能你使用过Windows/Dos下用 ...

  6. 转载:邮箱正则表达式Comparing E-mail Address Validating Regular Expressions

    Comparing E-mail Address Validating Regular Expressions Updated: 2/3/2012 Summary This page compares ...

  7. 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 ...

  8. Introducing Regular Expressions 学习笔记

    Introducing Regular Expressions 读书笔记 工具: regexbuddy:http://download.csdn.net/tag/regexbuddy%E7%A0%B4 ...

  9. 【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 ...

随机推荐

  1. news of javascript

    news of javascript https://javascriptweekly.com/ https://javascriptweekly.com/issues https://www.inf ...

  2. Go之Casbin简介,安装,模型,存储,函数

    简介 Casbin是一个强大的,高效的开源访问控制框架,其权限管理机制支持多种访问控制模型 支持编程语言 不同语言中支持的特性 我们一直致力于让 Casbin 在不同的编程语言中拥有相同的特性. 但是 ...

  3. django学习-11.开发一个简单的醉得意菜单和人均支付金额查询页面

    1.前言 刚好最近跟技术部门的[产品人员+UI人员+测试人员],组成了一桌可以去公司楼下醉得意餐厅吃饭的小team. 所以为了实现这些主要点餐功能: 提高每天中午点餐效率,把点餐时间由20分钟优化为1 ...

  4. glibc内存管理那些事儿

    本文转载自glibc内存管理那些事儿 Linux内存空间简介 32位Linux平台下进程虚拟地址空间分布如下图: 进程虚拟地址空间分布 图中,0xC0000000开始的最高1G空间是内核地址空间,剩下 ...

  5. 手把手教你Spring Boot整合Mybatis Plus 代码生成器

    一.在pom.xml中添加所需依赖 <!-- MyBatis-Plus代码生成器--> <dependency> <groupId>com.baomidou< ...

  6. easyPOI基本用法

    参考网址:http://www.wupaas.com/ 1.Excel文件的导入导出 项目源码:后台:https://github.com/zhongyushi-git/easypoi-demo-ad ...

  7. Spring @Transactional注解和ReentrantLock同步锁同时使用不能同步的问题

    结论:如果在service层的方法上同时使用事务和同步锁无法保证数据同步. 1 @Service 2 public class ServiceImpl{ 3 4 private static Lock ...

  8. springboot源码(4)

    我们上3个篇章写了springboot的自动装配.servlet组件的注入以及web容器实现内嵌的原理,现在我们来看springboot启动过程中到底做了些什么,也就是打开我们的run方法: 这里我们 ...

  9. 使用windbg定位内存问题【入门级】

    1. 背景 在开发过程中,我们可能遇到应用程序线程占用过大的问题,可以通过windbg命令去定位哪些类型,哪些内存一直占用堆资源,从而查出问题,解决问题. 2. 准备工作 工具: 抓取DUMP文件的工 ...

  10. linux_MYSQL 数据库自动备份并压缩和删除历史备份

    1. 创建shell脚本 #! /bin/bash# MySQL用户user="root"# MySQL密码userPWD="123456789"# 需要定时备 ...