正则表达式语法完整版
- 格式:doc
- 大小:74.50 KB
- 文档页数:4
正则表达式是一种用于匹配和处理文本的强大工具,可以在很多编程语言和文本编辑器中使用。
以下是一些常用的正则表达式语法:1.字符匹配:–.: 匹配任意单个字符,不包括换行符。
–\w: 匹配任意字母、数字或下划线。
–\d: 匹配任意数字。
–\s: 匹配任意空白字符,包括空格、制表符、换行等。
–[...]: 匹配方括号内的任意字符。
例如,[aeiou]匹配任意一个元音字母。
–[^...]: 匹配除了方括号内字符之外的任意字符。
例如,[^aeiou]匹配任意一个非元音字母。
2.重复匹配:–*: 匹配前一个字符0次或多次。
–+: 匹配前一个字符1次或多次。
–: 匹配前一个字符0次或1次。
–{n}: 匹配前一个字符恰好n次。
–{n,}: 匹配前一个字符至少n次。
–{n,m}: 匹配前一个字符至少n次,最多m次。
3.边界匹配:–^: 匹配字符串的开始位置。
–$: 匹配字符串的结束位置。
–\b: 匹配单词边界,即单词前后的位置。
–\B: 匹配非单词边界的位置。
4.分组和捕获:–(): 将括号内的表达式视为一个分组。
–(?:): 类似于普通分组,但不进行捕获。
–\n: 反向引用,引用第n个分组的内容。
5.特殊字符转义:–\: 转义字符,用于匹配特殊字符本身。
6.修饰符:–i: 忽略大小写。
–g: 全局匹配,不仅匹配第一个结果。
–m: 多行匹配,使^和$匹配每一行的开始和结束。
这里列举了一些常用的正则表达式语法,但实际使用中,还有更多复杂的语法和特性,可以根据具体需求查阅更详细的正则表达式文档和教程。
不同编程语言和文本编辑器对正则表达式的支持也有所不同,所以在实际应用中需要根据具体的环境进行调整。
java正则表达式语法⼤全1 [正则表达式]⽂本框输⼊内容控制2整数或者⼩数:^[0-9]+\.{0,1}[0-9]{0,2}$3只能输⼊数字:"^[0-9]*$"。
4只能输⼊n位的数字:"^\d{n}$"。
5只能输⼊⾄少n位的数字:"^\d{n,}$"。
6只能输⼊m~n位的数字:。
"^\d{m,n}$"7只能输⼊零和⾮零开头的数字:"^(0|[1-9][0-9]*)$"。
8只能输⼊有两位⼩数的正实数:"^[0-9]+(.[0-9]{2})?$"。
9只能输⼊有1~3位⼩数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
10只能输⼊⾮零的正整数:"^\+?[1-9][0-9]*$"。
11只能输⼊⾮零的负整数:"^\-[1-9][]0-9"*$。
12只能输⼊长度为3的字符:"^.{3}$"。
13只能输⼊由26个英⽂字母组成的字符串:"^[A-Za-z]+$"。
14只能输⼊由26个⼤写英⽂字母组成的字符串:"^[A-Z]+$"。
15只能输⼊由26个⼩写英⽂字母组成的字符串:"^[a-z]+$"。
16只能输⼊由数字和26个英⽂字母组成的字符串:"^[A-Za-z0-9]+$"。
17只能输⼊由数字、26个英⽂字母或者下划线组成的字符串:"^\w+$"。
18验证⽤户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
19验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
正则表达式语法大全前言:一般开发中都会接触到正则表达式,作为一名合格的前端,也应该了解一下正则表达式编写原则,便于自己也能快速编写想要的正则表达式。
1、作用(正则表达式是一种字符串匹配的模式)数据验证:比如电话号码、邮箱等替换文本:快速找到特定文本,用于替换快速提取字符串:基于匹配原则,快速从文档中查找或提取子字符串2、语法(普通字符+特殊字符)普通字符[abc] 匹配[...]的所有字符[^abc] 取反,除了[...]的其他字符[A-Z] 区间字母A到Z.匹配除(\n换行符 \r 回车符)的任何单个字符\s \S 匹配所有,\s所有空白符,包括换行 \S非空白符,不包括换行\w 匹配字母、数字、下划线特殊字符$ 结尾位置(匹配$字符----\$)^ 开始位置(匹配$字符----\^)() 子表达式开始和结束(匹配字符----\( 和 \))* 匹配零次或多次(匹配字符----\*)+匹配一次或多次(匹配字符----\+)匹配零次或一次(匹配字符----\?)| 两项间的一个(匹配字符----\|)限定符{n} n为非负整数,匹配n次{n,} n为非负整数,至少n次{n,m} n为非负整数,n<=m,最少n次,最多m次修饰符i 不区分大小写g 全局匹配m 多行匹配s 特殊字符远点包含换行符3、常用场景•16进制颜色/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/以#开始,6或3个字符(A-F、a-f、0-9)结尾•电话号码/^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/以1开头,3可跟任一数字(\d),4可跟5-9,5可跟0-3或5-9 ,6后2567其中一个,7后是0-8,8后任一数字,9后是0-3或3-5,其余8位是任意数字(\d{8})•身份证号/^[1-9]\d{5}(19|20|21)\d{2}(0[1-9]|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}[\dX]$/ 第一位在0-9区间,后面是5位任意数字,4位年份(19、20、21开头,后两位任意),两位代表月份(0开头的1-9或者是10、11、12),两位日期(01-31),三位顺序码,最后一位是校验码,可数字可X•网址/^((https?):)?\/\/([^?:/]+)(:(\d+))?(\/[^?]*)?(\?(.*))?/•邮箱^[A-Za-z0-9-_\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 名称有汉字([\ue00-\u9fa5])、字母([a-zA-z])、数字、下划线、中划线,域名有数字、字母、下划线、中划线4、使用方法字符串.match(正则):返回符合的字符串,若不满足返回null字符串.search(正则):返回搜索到的位置,若非一个字符,则返回第一个字母的下标,若不匹配则返回-1字符串.replace(正则,新的字符串):找到符合正则的内容并替换正则.test(字符串):在字符串中查找符合正则的内容,满足则返回true,反之为false说明:new RegExp(规则).test(字符串)和上面写法作用相同。
正则表达式150种表达方式1、删除所有数字。
只要查找:\d就OK。
为了不留空行:替换处:\d2、删除所有英文字母。
只要查找:\a就OK。
为了不留空行:替换处:\d3、删除除换行符以外的所有。
只要查找:. 为了不留空行:替换处:\d4、既删除英文字母又删除数字。
只要查找:\w。
为了不留空行:替换处:\d5、删除数字加字母加等于(如:3a=或3zz=)只要查找:\d+\a+\=。
为了不留空行:替换处:\d6、删除换行。
只要查找:$。
替换处:\d(还原查找:\a+=\f。
替换:\0\n)。
如在换行后加一空格,查找:(\a)$。
替换:\0 \d。
7、删除空行只要查找:^$。
为了不留空行:替换处:\d8、删除首尾空格。
只要查找:^\s*|\s*$就OK9、删除行前数字及顿号。
只要查找:\d+、替换为空10、删除末尾标点符号。
只要查找:\P+$|\P+\s+$,“|”前面是没有空格的,“|”后面有空格,P后的加是为了……而用的。
11、删除末尾空格。
只要查找:\s+$。
替换为空。
12、删除第一个字如:“的我们”中的“的”只要查找:^\的。
13、删除第几个字。
查找:查找:^().(.+)。
替换:\1\2。
去掉前面的拼音:查找:^\a+替换为空。
第一个括号里可加“.”且可变。
14、删含的。
查:.*的.*替:\d。
的头查:.*=的.*替:\d。
的尾查:\a.*\c.*的$替:\d(留它不匹配)●删非的行查:^[^的]+$替:\d15、删除几码以上的码查:^(...)...替:\1。
删第几位码。
查:^(...).(.+)替:\1\2(变成\1,\2则其位则改成,了)首括号的.可变。
16、删除各类型的几字词,但必须是码前词后或纯词。
三字词:查找:^\~f{}\f{3}$替换:\d。
替换:\d “3”可以改。
17、删除11字词及其以上的词条查找(自定义格式):\a{}\=(\c|\P|\p){11,}。
替换:\d。
11可改。
Emeditor正则表达式语法Emeditor正则表达式语法(Regular expression, 简写Regexes 或Regex)1 普通字符普通字符是指除了 ".", "*", "?", "+", "(", ")", "{", "}", "[", "]", "^", "$" 和 "\" 这些特殊字符之外的所有其他字符。
而这些特殊字符也可以通过前面加上"\"前缀而变为普通字符。
比如, 搜索"CCF"即为在文本中匹配所有的"CCF"字符串, 搜索"\[CCF\]"则是在文本中匹配所有的"[CCF]"字符串,简而言之, 普通字符即为只匹配自身的字符。
2 元字符2.1 特殊字符. 匹配除换行符 \n 之外的任何单个字符。
( ) 分组捕获(子表达式)的开始和结束。
可以捕获子表达式以供以后使用。
[ ] 中括号表达式的开始。
中括号表达式是在方括号内包含一个或多个字符构成的列表的表达式。
普通字符在中括号内表示本身,大多数特殊字符在中括号表达式内出现时失去它们的意义。
除了转义字符''\'', (要包含''\'', 需要使用''\\'') 如: 正则表达式 No [1234] 匹配 No 1, No 2, No 3 和 No 4。
如果想在中括号中使用一个范围作为列表来匹配字符,可以用连字符 ''-'' 将范围中的开始字徒崾址挚ジ鲎址淖址等范ǚ段诘南喽运承颉H? 正则表达式 No [1-4] = No [1234]。
JS正则表达式语法⼤全(⾮常详细)正则表达式是⼀种通⽤的⼯具,在 Script、、Java、、等⼏乎所有的编程语⾔中都能使⽤;但是,不同编程语⾔对正则表达式语法的⽀持不尽相同,有的编程语⾔⽀持所有的语法,有的仅⽀持⼀个⼦集。
本节讲到的正则表达式语法适⽤于 JavaScript。
正则表达式的语法体现在字符模式上。
字符模式是⼀组特殊格式的字符串,它由⼀系列特殊字符和普通字符构成,其中每个特殊字符都包含⼀定的语义和功能。
描述字符根据正则表达式语法规则,⼤部分字符仅能够描述⾃⾝,这些字符被称为普通字符,如所有的字母、数字等。
元字符就是拥有特动功能的特殊字符,⼤部分需要加反斜杠进⾏标识,以便于普通字符进⾏区别,⽽少数元字符,需要加反斜杠,以便转译为普通字符使⽤。
JavaScript 正则表达式⽀持的元字符如表所⽰。
元字符元字符描述.查找单个字符,除了换⾏和⾏结束符\w查找单词字符\W查找⾮单词字符\d查找数字\D查找⾮数字字符\s查找空⽩字符\S查找⾮空⽩字符\b匹配单词边界\B匹配⾮单词边界\0查找 NUL字符\n查找换⾏符\f查找换页符\r查找回车符\t查找制表符\v查找垂直制表符\xxx查找以⼋进制数 xxxx 规定的字符\xdd查找以⼗六进制数 dd 规定的字符\uxxxx查找以⼗六进制 xxxx规定的 Unicode 字符表⽰字符的⽅法有多种,除了可以直接使⽤字符本⾝外,还可以使⽤ ASCII 编码或者 Unicode 编码来表⽰。
⽰例1下⾯使⽤ ASCII 编码定义正则表达式直接量。
1. var r = /\x61/;2. var s = "JavaScript";3. var a = s.match(s);由于字母 a 的 ASCII 编码为 97,被转换为⼗六进制数值后为 61,因此如果要匹配字符 a,就应该在前⾯添加“\x”前缀,以提⽰它为 ASCII 编码。
⽰例2除了⼗六进制外,还可以直接使⽤⼋进制数值表⽰字符。
正则表达式-语法⼤全1. 正则表达式规则1.1 普通字符字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。
表达式中的普通字符,在匹配⼀个字符串的时候,匹配与之相同的⼀个字符。
,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。
(注:下标从0开始还是从1开始,因当前编程语⾔的不同⽽可能不同),匹配结果是:成功;匹配到的内容是:"bcd";匹配到的位置是:开始于1,结束于4。
1.2 简单的转义字符⼀些不便书写的字符,采⽤在前⾯加 "/" 的⽅法。
这些字符其实我们都已经熟知了。
表达式可匹配/r, /n代表回车和换⾏符/t制表符//代表 "/" 本⾝还有其他⼀些在后边章节中有特殊⽤处的标点符号,在前⾯加 "/" 后,就代表该符号本⾝。
⽐如:^, $ 都有特殊意义,如果要想匹配字符串中 "^" 和 "$" 字符,则表达式就需要写成 "/^" 和 "/$"。
表达式可匹配/^匹配 ^ 符号本⾝/$匹配 $ 符号本⾝/.匹配⼩数点(.)本⾝这些转义字符的匹配⽅法与 "普通字符" 是类似的。
也是匹配与之相同的⼀个字符。
,匹配结果是:成功;匹配到的内容是:"$d";匹配到的位置是:开始于3,结束于5。
1.3 能够与 '多种字符' 匹配的表达式正则表达式中的⼀些表⽰⽅法,可以匹配 '多种字符' 其中的任意⼀个字符。
⽐如,表达式 "/d" 可以匹配任意⼀个数字。
虽然可以匹配其中任意字符,但是只能是⼀个,不是多个。
这就好⽐玩扑克牌时候,⼤⼩王可以代替任意⼀张牌,但是只能代替⼀张牌。
lancsbox正则表达式一、简介LANCSBox是一个用于文本匹配和搜索的库,它支持正则表达式(Regular Expression)作为匹配模式。
正则表达式是一种强大的文本处理工具,可以用来进行模式匹配、替换、分割等操作。
在LANCSBox中,正则表达式的语法和功能与其他流行的正则表达式库相似,使得用户可以方便地使用它来进行文本处理和数据提取。
二、LANCSBox正则表达式的语法LANCSBox的正则表达式语法遵循POSIX规范,并支持一些扩展功能。
以下是一些常用的正则表达式元字符和语法:1.^:匹配输入字符串的开头。
2.$:匹配输入字符串的结尾。
3.:匹配除换行符之外的任意字符。
4.*:匹配前面的字符或子表达式零次或多次。
5.+:匹配前面的字符或子表达式一次或多次。
6.?:匹配前面的字符或子表达式零次或一次。
7.[ ]:表示字符集合,匹配集合中的任意一个字符。
8.\:用于转义特殊字符。
9.|:表示或关系,匹配前面的字符或子表达式或后面的字符或子表达式。
10.:表示分组,将多个字符或子表达式组合在一起。
11.{n}:表示前面的字符或子表达式精确匹配n次。
12.{n,}:表示前面的字符或子表达式匹配n次或多次。
13.{n,m}:表示前面的字符或子表达式匹配至少n次,至多m次。
除了这些基本元字符和语法之外,LANCSBox还支持一些扩展功能,如反向引用、多行模式等。
具体可参考LANCSBox的文档或相关资料了解更多细节。
三、示例下面是一些使用LANCSBox正则表达式的示例:1.匹配以字母开头的字符串:2.匹配包含数字的字符串:3.匹配以特定字符串开头的字符串:4.匹配以特定字符串结尾的字符串:5.匹配包含特定字符集的字符串:这个正则表达式可以用来匹配类似""这样的电子邮件地址。
. :匹配任何单个字符。
例如正则表达式“b.g"能匹配如下字符串:“big”、“bug”、“b g",但是不匹配“buug”,“b。
g”可以匹配“buug".[]:匹配括号中的任何一个字符。
例如正则表达式“b[aui]g”匹配bug、big和bag,但是不匹配beg、baug。
可以在括号中使用连字符“-”来指定字符的区间来简化表示,例如正则表达式[0—9]可以匹配任何数字字符,这样正则表达式“a[0-9]c”等价于“a[0123456789]c”就可以匹配“a0c"、“a1c”、“a2c”等字符串;还可以制定多个区间,例如“[A—Za—z]"可以匹配任何大小写字母,“[A—Za—z0-9]”可以匹配任何的大小写字母或者数字。
( ):将()之间括起来的表达式定义为“组"(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。
把一些字符表示为一个整体.改变优先级、定义提取组两个作用.|:将两个匹配条件进行逻辑“或”运算。
’z|food' 能匹配”z”或"food"。
’(z|f)ood' 则匹配"zood" 或"food"。
*:匹配0至多个在它之前的子表达式,和通配符*没关系。
例如正则表达式“zo*”能匹配“z”、“zo”以及“zoo”;因此“。
*”意味着能够匹配任意字符串。
"z(b|c)*"→zb、zbc、zcb、zccc、zbbbccc.”z(ab)*"能匹配z、zab、zabab(用括号改变优先级)。
+ :匹配前面的子表达式一次或多次,和*对比(0到多次).例如正则表达式9+匹配9、99、999等。
“zo+”能匹配“zo”以及“zoo”,不能匹配”z”.?:匹配前面的子表达式零次或一次。
例如,"do(es)?" 可以匹配”do" 或"does”。
数据库正则表达语法数据库正则表达式语法引言数据库正则表达式语法是一种强大的工具,用于在数据库中进行模式匹配和搜索。
它可以帮助我们在大量的数据中快速找到符合特定模式的字符串。
本文将详细介绍数据库正则表达式语法,并提供一些实用的示例。
一、基本语法数据库正则表达式语法包括以下几个基本元素:1.1 字符匹配正则表达式可以使用普通字符进行匹配,例如匹配字符串中的字母、数字和特殊字符。
例如,正则表达式`[a-zA-Z0-9]`可以匹配任意一个字母或数字。
1.2 元字符元字符是正则表达式中具有特殊含义的字符,例如`.`表示匹配任意一个字符,`*`表示匹配前面的字符0次或多次,`+`表示匹配前面的字符1次或多次。
例如,正则表达式`a.*b`可以匹配以字母a开始,以字母b结束,并且中间可以有任意个字符的字符串。
1.3 字符类字符类用于匹配一组字符中的任意一个字符。
例如,正则表达式`[abc]`可以匹配字母a、b或c中的任意一个字符。
1.4 转义字符转义字符用于匹配一些特殊的字符,例如正则表达式中的`.`和`*`,如果要匹配这些字符本身,需要在前面加上反斜杠`\`进行转义。
例如,正则表达式`\.`可以匹配字符串中的点号。
二、常用示例以下是一些常用的数据库正则表达式语法示例:2.1 匹配数字要匹配一个或多个数字,可以使用正则表达式`[0-9]+`。
例如,可以使用这个正则表达式找到所有包含数字的字符串。
2.2 匹配邮箱要匹配一个合法的邮箱地址,可以使用正则表达式`[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,3}`。
例如,可以使用这个正则表达式找到所有符合邮箱格式的字符串。
2.3 匹配电话号码要匹配一个合法的电话号码,可以使用正则表达式`\d{3}-\d{8}|\d{4}-\d{7}`。
例如,可以使用这个正则表达式找到所有符合电话号码格式的字符串。
2.4 匹配日期要匹配一个合法的日期,可以使用正则表达式`\d{4}-\d{2}-\d{2}`。
常用正则表达式正则表达式是一种用于查找和替换文本字符串的强大工具,它能够有效地检测和处理字符串中的模式。
它们被广泛应用于编程语言、文本编辑器、网页开发器和其他软件工具中,以满足各种应用的需求。
正则表达式的出现使得我们可以快速查找和替换字符串中的特定模式。
它们可以简化搜索、提取、编辑和替换文本的工作,从而大大提高工作效率。
本文将针对正则表达式,深入讨论它的语法、用法和常见问题,并总结一些常用的正则表达式。
一、正则表达式语法正则表达式使用一种特殊的语法结构来表达文本字符串的模式,称为“正则表达式语法”。
语法结构由普通字符和“元字符”两部分组成,其中元字符用于指示文本字符串的模式,普通字符表示要查找的文本字符串。
正则表达式语法是由以下几个原则组成的:(1)普通字符。
普通字符会被原样匹配。
例如,在正则表达式中输入字符“a”将仅匹配文本中的“a”字符;(2)元字符。
元字符用于描述文本字符串的模式。
它们是正则表达式语法中最重要的部分,常用的元字符有“*”、“+”、“?”、“()”等符号;(3)字符组(Character Class)。
字符组用于指定一个字符集合,可以搜索任何在该字符集合中的字符,例如“[0-9]”将搜索任何数字;(4)字符范围(Character Ranges)。
字符范围用于指定一个连续的字符集合,例如“a-z”将搜索所有小写字母;(5)量词(Quantifiers)。
量词用于指定字符出现的次数,例如“*”表示字符可以出现任意次数,“+”表示字符至少要出现一次;(6)分组(Groups)。
分组可以将一个模式的不同部分分开,例如“(abc)”将abc分成三个模式;(7)反义(Anchors)。
反义用于指定非指定字符的模式,例如“^”表示任何非数字的字符;(8)转义(Escapes)。
转义符可以将特殊字符转换为普通字符,例如“”将使“”变为普通字符。
二、正则表达式用法正则表达式可以用于各种文本处理任务,如搜索、提取、编辑和替换等。
不包含中文和空格的正则表达式(原创版)目录1.正则表达式的概念与作用2.正则表达式的基本语法3.正则表达式的应用场景4.正则表达式的优势与局限性正文1.正则表达式的概念与作用正则表达式(Regular Expression),简称 regex,是一种强大的文本处理工具,主要用于处理字符串,进行文本搜索和替换等操作。
它可以用来检查一个字符串是否符合某种模式,或者用来提取字符串中的特定信息。
正则表达式广泛应用于计算机科学和编程领域,如文本编辑器、搜索引擎、数据验证等。
2.正则表达式的基本语法正则表达式的基本语法包括以下几种元素:- 字面字符:例如 abc、123 等,表示文本中的实际字符。
- 元字符:例如.、*、+等,表示字符集的运算符。
- 字符类:表示一类字符,如 [a-zA-Z] 表示所有英文字母,[0-9] 表示所有数字等。
- 锚点:例如^、$、b等,表示字符串的位置关系。
- 分组和捕获:使用圆括号表示一个字符组的组合,可以进行分组和捕获。
以下是一个简单的正则表达式示例:```^[a-zA-Z]+$```该正则表达式表示一个仅包含英文字母的字符串,且长度至少为 1个字符。
3.正则表达式的应用场景正则表达式在许多场景下都有广泛应用,以下是一些常见的应用场景:- 文本搜索与替换:使用正则表达式可以快速地在文本中查找特定信息,或者将某些字符串替换为指定内容。
- 数据验证:在表单提交或数据输入时,可以使用正则表达式对输入的数据进行验证,确保数据的正确性。
- 文本分析:正则表达式可以用于对文本进行分词、词性标注等自然语言处理任务。
- 网页抓取:在网络爬虫中,正则表达式可以用于解析网页源代码,提取所需的信息。
4.正则表达式的优势与局限性正则表达式的优势在于其强大的文本处理能力,可以处理复杂的字符串模式。
同时,正则表达式具有较高的可读性和简洁性,可以使代码更加简洁易懂。
然而,正则表达式也存在一定的局限性。
首先,它的语法较为复杂,需要一定的学习和实践才能熟练掌握。
RE正则表达式-语法正则表达式(regular expression)描述了⼀种字符串匹配的模式(pattern),可以⽤来检查⼀个串是否含有某种⼦串、将匹配的⼦串替换或者从某个串中取出符合某个条件的⼦串等。
例如:runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前⾯的字符必须⾄少出现⼀次(1次或多次)。
runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表前⾯的字符可以不出现,也可以出现⼀次或者多次(0次、或1次、或多次)。
colou?r 可以匹配 color 或者 colour,? 问号代表前⾯的字符最多只可以出现⼀次(0次、或1次)。
构造正则表达式的⽅法和创建数学表达式的⽅法⼀样。
也就是⽤多种元字符与运算符可以将⼩的表达式结合在⼀起来创建更⼤的表达式。
正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的⽂字模式。
模式描述在搜索⽂本时要匹配的⼀个或多个字符串。
正则表达式作为⼀个模板,将某个字符模式与所搜索的字符串进⾏匹配。
普通字符普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。
这包括所有⼤写和⼩写字母、所有数字、所有标点符号和⼀些其他符号。
⾮打印字符⾮打印字符也可以是正则表达式的组成部分。
下表列出了表⽰⾮打印字符的转义序列:字符描述\cx匹配由x指明的控制字符。
例如, \cM 匹配⼀个 Control-M 或回车符。
x 的值必须为 A-Z 或 a-z 之⼀。
否则,将c 视为⼀个原义的 'c' 字符。
\f匹配⼀个换页符。
等价于 \x0c 和 \cL。
\n匹配⼀个换⾏符。
等价于 \x0a 和 \cJ。
\r匹配⼀个回车符。
等价于 \x0d 和 \cM。
\s匹配任何空⽩字符,包括空格、制表符、换页符等等。
正则表达式基础知识
一个正则表达式就是由普通字符(例如字符a 到z)以及特殊字符(称为元字符)组成的文字模式。
该模式描述在查找文字主体时待匹配的一个或多个字符串。
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
如:
下面看几个例子:
"^The":表示所有以"The"开始的字符串("There","The cat"等);
"of despair$":表示所以以"of despair"结尾的字符串;
"^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了;"notice":表示任何包含"notice"的字符串。
'*','+'和'?'这三个符号,表示一个或一序列字符重复出现的次数。
它们分别表示“没有或更多”,“一次或更多”还有“没有或一次”。
下面是几个例子:
"ab*":表示一个字符串有一个a后面跟着零个或若干个b。
("a", "ab", "abbb",……);"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多;
"ab?":表示一个字符串有一个a后面跟着零个或者一个b;
"a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。
也可以使用范围,用大括号括起,用以表示重复次数的范围。
"ab{2}":表示一个字符串有一个a跟着2个b("abb");
"ab{2,}":表示一个字符串有一个a跟着至少2个b;
"ab{3,5}":表示一个字符串有一个a跟着3到5个b。
请注意,你必须指定范围的下限(如:"{0,2}"而不是"{,2}")。
还有,你可能注意到了,'*','+'和'?'相当于"{0,}","{1,}"和"{0,1}"。
还有一个'¦',表示“或”操作:
"hi¦hello":表示一个字符串里有"hi"或者"hello";
"(b¦cd)ef":表示"bef"或"cdef";
"(a¦b)*c":表示一串"a""b"混合的字符串后面跟一个"c";
'.'可以替代任何字符:
"a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;
"^.{3}$":表示有任意三个字符的字符串(长度为3个字符);
方括号表示某些字符允许在一个字符串中的某一特定位置出现:
"[ab]":表示一个字符串有一个"a"或"b"(相当于"a¦b");
"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");"^[a-zA-Z]":表示一个以字母开头的字符串;
"[0-9]%":表示一个百分号前有一位的数字;
"[0-9]+":表示一个以上的数字;
",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。
你也可以在方括号里用'^'表示不希望出现的字符,'^'应在方括号里的第一位。
(如:"%[^a-zA-Z]%"表
示两个百分号中不应该出现字母)。
为了逐字表达,必须在"^.$()¦*+?{\"这些字符前加上转移字符'\'。
请注意在方括号中,不需要转义字符。