正则表达式及其示例课件
- 格式:ppt
- 大小:1.92 MB
- 文档页数:22
中文符号正则表达式一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$有两位小数的正实数:^[0-9]+(.[0-9]{2})?$有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$非零的正整数:^[1-9]\d*$ 或^([1-9][0-9]*){1,3}$ 或^\+?[1-9][0-9]*$非零的负整数:^\-[1-9][]0-9"*$ 或^-[1-9]\d*$非负整数:^\d+$ 或^[1-9]\d*|0$非正整数:^-[1-9]\d*|0$ 或^((-\d+)|(0+))$非负浮点数:^\d+(\.\d+)?$ 或^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[ 1-9][0-9]*))$负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9] *[1-9][0-9]*)))$浮点数:^(-?\d+)(\.\d+)?$ 或^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$二、校验字符的表达式汉字:^[\u4e00-\u9fa5]{0,}$英文和数字:^[A-Za-z0-9]+$ 或^[A-Za-z0-9]{4,40}$长度为3-20的所有字符:^.{3,20}$由26个英文字母组成的字符串:^[A-Za-z]+$由26个大写英文字母组成的字符串:^[A-Z]+$由26个小写英文字母组成的字符串:^[a-z]+$由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或^\w{3,20}中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+禁止输入含有~的字符[^~\x22]+其它:.*匹配除 \n 以外的任何字符。
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。
如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。
许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。
那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification Request)已经得到认可,你可以期待在JDK的下一版本中看到它。
然而,如果现在就需要使用正则表达式,又该怎么办呢?你可以从下载源代码开放的Jakarta-ORO库。
本文接下来的内容先简要地介绍正则表达式的入门知识,然后以Jakarta-ORO API 为例介绍如何使用正则表达式。
一、正则表达式基础知识我们先从简单的开始。
假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。
如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。
也就是说:1.1 句点符号假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。
另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。
要构造出这个正则表达式,你可以使用一个通配符——句点符号“.”。
这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。
这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:1.2 方括号符号为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。
正则办公用法实例
1. 查找手机号码:
正则表达式:\d{11}
用法实例:
- 可以用于验证用户输入的手机号码是否符合格式要求;
- 可以用于从一段文本中提取出所有的手机号码。
2. 邮箱验证:
正则表达式:\w+@\w+\.\w+
用法实例:
- 可以用于验证用户输入的邮箱地址是否符合格式要求;
- 可以用于从一段文本中提取出所有的邮箱地址。
3. 验证密码强度:
正则表达式:^(?=.*[a-z])(?=.*[A-
Z])(?=.*\d)(?=.*[!@#$%^&*()\-_=+{};:,<.>]).{8,}
用法实例:
- 可以用于验证用户输入的密码是否符合一定的强度要求,如至少包含一个小写字母、一个大写字母、一个数字、一个特殊字符;
- 可以用于注册时的密码强度检测。
4. 验证身份证号码:
正则表达式:^\d{17}[\dXx]$
用法实例:
- 可以用于验证用户输入的身份证号码是否符合格式要求。
5. 验证日期格式:
正则表达式:^\d{4}-\d{1,2}-\d{1,2}$
用法实例:
- 可以用于验证用户输入的日期是否符合格式要求,如"2022-01-01"。
6. 查找网址:
正则表达式:(http|https)://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
用法实例:
- 可以用于从一段文本中提取出所有的网址。
以上仅是一些常见的办公用法实例,正则表达式还可以用于更复杂的需求,如匹配特定格式的文件名、过滤文本中的敏感词等。
30分钟正则表达式在实际开发中经常需要进⾏对字符串进⾏复杂的匹配查找替换等等操作,通过正则表达式可以⽅便实现字符串的复杂操作正则表达式[a-z]表⽰a到z的任意字符正则表达式[a-z]+表⽰由1个或多个a到z的字符组成字符集合[abc] 这是由abc三个字符中任意⼀个字符[^abc] 除了abc的任意字符[a-z] abc......z 中的任意⼀个字符[a-zA-Z0-9] 这是a-z,A-Z,0-9中任意⼀个字符[a-z&&[^bc]] a-z中除了b和c以外的任意⼀个字符其中&&表⽰与的关系预定义字符集\d 任意⼀个数字字符相当于0-9\w 单词字符,相当于[a-zA-Z0-9_]\s 空⽩字符,相当于[\t\n\cOB\h\r]\D ⾮数字字符\W ⾮单词字符\S ⾮空⽩字符数量词X? 表⽰0个或者1个XX* 表⽰0个或者任意多个XX+ 表⽰1个到任意多个X(⼤于等于1个X)X{N} 表⽰N个XX{N,} 表⽰N个到任意多个X(⼤于等于N个X)X{N,M}表⽰N个到M个X⽰例匹配邮政编码六位数[0-9][0-9][0-9][0-9][0-9][0-9] //第⼀种[0-9]+{6} //第⼆种 \d{6} //第三种 边界匹配“^” 和“$”“^” 表⽰字符串开始“$”表⽰字符串结束matches⽅法(正则表达式)将⼀个字符串与正则进⾏匹配匹配成功返回true 否则为falseString email = "bjliyi@";String reg = "^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9]{2,4}$";System.out.println(reg.matches(email));使⽤split和replaceAll⽅法来匹配正则String str = "s s b c d";String sr = "[\\s]";String[] s = str.split(sr);System.out.println(Arrays.toString(s));String str1 = "s+s-b*c=d";String sr1 = "[\\+\\-\\*\\=]";String[] s1 = str1.split(sr1);System.out.println(Arrays.toString(s1)+"s1");String str2 = "12556ds56d";String sr2 = "[0-9]+";str2 = str2.replaceAll(sr2,"数字");System.out.println(str2);equals⽅法和==之间的区别==⽤于⽐较变量的值,可以应⽤于任何类型,如果⽤于引⽤类型⽐交的变量中存储的值(地址信息)判断两个变量是否指向相同对象⽽equals是Object的⽅法,重写之后,可以⽤于⽐较两个对象的内容是否相等。
java正则表达式(内附例⼦)正则表达式 定义:正则表达式,⼜称规则表达式。
(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的⼀个概念。
正则表达式通常被⽤来检索、替换那些符合某个模式(规则)的⽂本。
概念:正则表达式是对字符串操作的⼀种逻辑公式,就是⽤事先定义好的⼀些特定字符、及这些特定字符的组合,组成⼀个“规则字符串”,这个“规则字符串”⽤来表达对字符串的⼀种过滤逻辑。
⽬的:给定⼀个正则表达式和另⼀个字符串,我们可以达到如下的⽬的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)。
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
特点:正则表达式的特点是: 1. 灵活性、逻辑性和功能性⾮常强; 2. 可以迅速地⽤极简单的⽅式达到字符串的复杂控制。
3. 对于刚接触的⼈来说,⽐较晦涩难懂。
4、由于正则表达式主要应⽤对象是⽂本,因此它在各种⽂本编辑器场合都有应⽤,⼩到著名编辑器EditPlus,⼤到MicrosoftWord、Visual Studio等⼤型编辑器,都可以使⽤正则表达式来处理⽂本内容。
元字符 要想真正的⽤好正则表达式,正确的理解元字符是最重要的事情。
下表列出了所有的元字符和对它们的⼀个简短的描述。
元字符描述\将下⼀个字符标记符、或⼀个向后引⽤、或⼀个⼋进制转义符。
例如,“\\n”匹配\n。
“\n”匹配换⾏符。
序列“\\”匹配“\”⽽“\(”则匹配“(”。
即相当于多种编程语⾔中都有的“转义字符”的概念。
^匹配输⼊字⾏⾸。
如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$匹配输⼊⾏尾。
如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
*匹配前⾯的⼦表达式任意次。
例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。
正则表达式单数普通名词的正则表达式\w+_NN1,实义动词的正则表达式\w+_VV\w+,形容词的正则表达式\w+_JJ,副词的正则表达式\w+_RR,-ing形式的正则表达式\w+_VDG,过去分词的正则表达式\w+_V\wN,不定式to的正则表达式to_TO,系动词be的所有形式的正则表达式\w+_VB\w,情态动词的正则表达式(\S+VM\s)?,否定词not的正则表达式\w+_XX,It的正则表达式[iI]t_PPH1It is +adj.+ that结构的正则表达式为:PPH1\s\S+_VBZ\s\S+_JJ\s\S+_CSTIt was +adj. + that结构的正则表达式为:PPH1\s\S+_VBDZ\s\S+_JJ\s\S+_CST It may be + adj. + that结构的正则表达式为:PPH1\s\S+_VM\s\S+_VB[0I]\s\S+_JJ\s\S+_CST It is/was/may be/has been/is very /may be very/may have been very/may not be so clear that …这一句型的正则表达式则为:\S+_PPH1\s(\S+_VM\s)?(\S+_VH\S+\s)?(\S+_XX\s)?\S+_VB\ S+\s(\S+_XX\s)?(\S+_ R\S+\s)?\S+_J\S+\s\S+_CST任意冠词的正则表达式是\S+_[AD]\w+\s,被动语态的正则表达式为\S+_VB\w*\s(\S+_[RX]\w+\s)*\S+_V\wN\s,完成时的正则表达式则成了\S+_VH\w*\s(\S+_[RX]\w+\s)*\S+_V\wN\s,进行时的正则表达式:\S+_VB\S+\s\S+_V[VBDH]G\s,双宾语结构的正则表达式:\S+_V\w+\s\S+_[NP]\w+\s\S+_[NP]\w+\b,“watch +名词/代词+do”的正则表达式:watch\w*_V\w+\s(\S+\s){0,2}\w+_[PN]\w+\s\w+_V\wI“watch (包含其各种形式) + 名词/代词+ doing”的正则表达式:watch\w*_V\w+\s(\S+\s){0,2}\w+_[PN]\w+\s\w+_V\wG)情态动词+have+done的正则表达式\,\S+_VM\w*\s(\S+_[RXT]\w+\s)*\S+_VH\w*\s\S+_VBN\s(\S+ _[RX]\w+\s)*\S+_V\ wN\s\wly/jj可以检索出以ly结尾的形容词,\wly/rb可以检索出以ly结尾的副词;\S+ility可以把所有以ility结尾的词语检索出来,如ability, inability, possibility 等。