正则表达式

合集下载

常用正则表达式语法大全

常用正则表达式语法大全

正则表达式是一种用于匹配和处理文本的强大工具,可以在很多编程语言和文本编辑器中使用。

以下是一些常用的正则表达式语法: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: 多行匹配,使^和$匹配每一行的开始和结束。

这里列举了一些常用的正则表达式语法,但实际使用中,还有更多复杂的语法和特性,可以根据具体需求查阅更详细的正则表达式文档和教程。

不同编程语言和文本编辑器对正则表达式的支持也有所不同,所以在实际应用中需要根据具体的环境进行调整。

1-6个字符的正则

1-6个字符的正则

1-6个字符的正则
正则表达式是一种用于匹配字符串模式的工具。

下面是可以匹配1到6个字符的正则表达式示例:
1. ^.{1,6}$。

这个正则表达式可以匹配任意1到6个字符的字符串。

其中,^表示字符串的开始,.{1,6}表示匹配任意1到6个字符,$表示字符串的结束。

2. ^\w{1,6}$。

这个正则表达式可以匹配包含1到6个字母、数字或下划线的字符串。

其中,\w表示匹配字母、数字或下划线,{1,6}表示匹配1到6个。

3. ^[a-zA-Z0-9]{1,6}$。

这个正则表达式可以匹配包含1到6个大写字母、小写字母或数字的字符串。

其中,[a-zA-Z0-9]表示匹配任意一个大写字母、小
写字母或数字。

4. ^[\u4e00-\u9fa5]{1,6}$。

这个正则表达式可以匹配包含1到6个中文字符的字符串。

其中,[\u4e00-\u9fa5]表示匹配任意一个中文字符。

5. ^[a-zA-Z]{1,3}$。

这个正则表达式可以匹配包含1到3个大写字母或小写字母的字符串。

其中,[a-zA-Z]表示匹配任意一个大写字母或小写字母。

6. ^[0-9]{1,6}$。

这个正则表达式可以匹配包含1到6个数字的字符串。

其中,[0-9]表示匹配任意一个数字。

以上是几个可以匹配1到6个字符的正则表达式示例,你可以根据具体的需求选择适合的正则表达式。

常用正则表达式大全!(例如:匹配中文、匹配html)

常用正则表达式大全!(例如:匹配中文、匹配html)

常⽤正则表达式⼤全!(例如:匹配中⽂、匹配html)⼀、常见正则表达式 匹配中⽂字符的正则表达式: [u4e00-u9fa5] 评注:匹配中⽂还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1) 匹配空⽩⾏的正则表达式:ns*r 评注:可以⽤来删除空⽩⾏ 匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? /> 评注:⽹上流传的版本太糟糕,上⾯这个也仅仅能匹配部分,对于复杂的嵌套标记依旧⽆能为⼒ 匹配⾸尾空⽩字符的正则表达式:^s*|s*$ 评注:可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 评注:表单验证时很实⽤ 匹配⽹址URL的正则表达式:^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?$ 评注:⽹上流传的版本功能很有限,上⾯这个基本可以满⾜需求匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实⽤ 匹配国内电话号码:d{3}-d{8}|d{4}-d{7} 评注:匹配形式如 0511-******* 或 021-******** 匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始 匹配中国邮政编码:[1-9]d{5}(?!d) 评注:中国邮政编码为6位数字 匹配⾝份证:d{15}|d{18} 评注:中国的⾝份证为15位或18位 匹配ip地址:d+.d+.d+.d+ 评注:提取ip地址时有⽤ 匹配特定数字: ^[1-9]d*$ //匹配正整数 ^-[1-9]d*$ //匹配负整数 ^-?[1-9]d*$ //匹配整数 ^[1-9]d*|0$ //匹配⾮负整数(正整数 + 0) ^-[1-9]d*|0$ //匹配⾮正整数(负整数 + 0) ^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数 ^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配⾮负浮点数(正浮点数 + 0) ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配⾮正浮点数(负浮点数 + 0) 评注:处理⼤量数据时有⽤,具体应⽤时注意修正 匹配特定字符串: ^[A-Za-z]+$ //匹配由26个英⽂字母组成的字符串 ^[A-Z]+$ //匹配由26个英⽂字母的⼤写组成的字符串 ^[a-z]+$ //匹配由26个英⽂字母的⼩写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英⽂字母组成的字符串 ^w+$ //匹配由数字、26个英⽂字母或者下划线组成的字符串 在使⽤RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下: 只能输⼊数字:“^[0-9]*$” 只能输⼊n位的数字:“^d{n}$” 只能输⼊⾄少n位数字:“^d{n,}$” 只能输⼊m-n位的数字:“^d{m,n}$” 只能输⼊零和⾮零开头的数字:“^(0|[1-9][0-9]*)$” 只能输⼊有两位⼩数的正实数:“^[0-9]+(.[0-9]{2})?$” 只能输⼊有1-3位⼩数的正实数:“^[0-9]+(.[0-9]{1,3})?$” 只能输⼊⾮零的正整数:“^+?[1-9][0-9]*$” 只能输⼊⾮零的负整数:“^-[1-9][0-9]*$” 只能输⼊长度为3的字符:“^.{3}$” 只能输⼊由26个英⽂字母组成的字符串:“^[A-Za-z]+$” 只能输⼊由26个⼤写英⽂字母组成的字符串:“^[A-Z]+$” 只能输⼊由26个⼩写英⽂字母组成的字符串:“^[a-z]+$” 只能输⼊由数字和26个英⽂字母组成的字符串:“^[A-Za-z0-9]+$” 只能输⼊由数字、26个英⽂字母或者下划线组成的字符串:“^w+$” 验证⽤户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。

正则表达式150种表达方式

正则表达式150种表达方式

正则表达式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可改。

常用正则表达式(通用字符过滤)

常用正则表达式(通用字符过滤)

常⽤正则表达式(通⽤字符过滤)正则表达式⽤于字符串处理、表单验证等场合,实⽤⾼效。

现将⼀些常⽤的表达式收集于此,以备不时之需。

匹配中⽂字符的正则表达式: [/u4e00-/u9fa5]匹配双字节字符(包括汉字在内):[^/x00-/xff]应⽤:计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa").length;}匹配空⾏的正则表达式:/n[/s| ]*/r匹配HTML标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/匹配⾸尾空格的正则表达式:(^/s*)|(/s*$)匹配中⽂字符的正则表达式: [/u4e00-/u9fa5]评注:匹配中⽂还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^/x00-/xff]评注:可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1)匹配空⽩⾏的正则表达式:/n/s*/r评注:可以⽤来删除空⽩⾏匹配HTML标记的正则表达式:<(/S*?)[^>]*>.*?<//1>|<.*? />评注:⽹上流传的版本太糟糕,上⾯这个也仅仅能匹配部分,对于复杂的嵌套标记依旧⽆能为⼒匹配⾸尾空⽩字符的正则表达式:^/s*|/s*$评注:可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*评注:表单验证时很实⽤匹配⽹址URL的正则表达式:[a-zA-z]+://[^/s]*评注:⽹上流传的版本功能很有限,上⾯这个基本可以满⾜需求匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$评注:表单验证时很实⽤匹配国内电话号码:/d{3}-/d{8}|/d{4}-/d{7}评注:匹配形式如 0511-******* 或 021-********匹配腾讯QQ号:[1-9][0-9]{4,}评注:腾讯QQ号从10000开始匹配中国邮政编码:[1-9]/d{5}(?!/d)评注:中国邮政编码为6位数字匹配⾝份证:/d{15}|/d{18}评注:中国的⾝份证为15位或18位匹配ip地址:/d+/./d+/./d+/./d+评注:提取ip地址时有⽤匹配特定数字:^[1-9]/d*$ //匹配正整数^-[1-9]/d*$ //匹配负整数^-?[1-9]/d*$ //匹配整数^[1-9]/d*|0$ //匹配⾮负整数(正整数 + 0)^-[1-9]/d*|0$ //匹配⾮正整数(负整数 + 0)^[1-9]/d*/./d*|0/./d*[1-9]/d*$ //匹配正浮点数^-([1-9]/d*/./d*|0/./d*[1-9]/d*)$ //匹配负浮点数^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$ //匹配浮点数^[1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0$ //匹配⾮负浮点数(正浮点数 + 0)^(-([1-9]/d*/./d*|0/./d*[1-9]/d*))|0?/.0+|0$ //匹配⾮正浮点数(负浮点数 + 0)评注:处理⼤量数据时有⽤,具体应⽤时注意修正匹配特定字符串:^[A-Za-z]+$ //匹配由26个英⽂字母组成的字符串^[A-Z]+$ //匹配由26个英⽂字母的⼤写组成的字符串^[a-z]+$ //匹配由26个英⽂字母的⼩写组成的字符串^[A-Za-z0-9]+$ //匹配由数字和26个英⽂字母组成的字符串^/w+$ //匹配由数字、26个英⽂字母或者下划线组成的字符串在使⽤RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:只能输⼊数字:“^[0-9]*$”只能输⼊n位的数字:“^d{n}$”只能输⼊⾄少n位数字:“^d{n,}$”只能输⼊m-n位的数字:“^d{m,n}$”只能输⼊零和⾮零开头的数字:“^(0|[1-9][0-9]*)$”只能输⼊有两位⼩数的正实数:“^[0-9]+(.[0-9]{2})?$”只能输⼊有1-3位⼩数的正实数:“^[0-9]+(.[0-9]{1,3})?$”只能输⼊⾮零的正整数:“^+?[1-9][0-9]*$”只能输⼊⾮零的负整数:“^-[1-9][0-9]*$”只能输⼊长度为3的字符:“^.{3}$”只能输⼊由26个英⽂字母组成的字符串:“^[A-Za-z]+$”只能输⼊由26个⼤写英⽂字母组成的字符串:“^[A-Z]+$”只能输⼊由26个⼩写英⽂字母组成的字符串:“^[a-z]+$”只能输⼊由数字和26个英⽂字母组成的字符串:“^[A-Za-z0-9]+$”只能输⼊由数字、26个英⽂字母或者下划线组成的字符串:“^w+$”验证⽤户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。

《正则表达式》课件

《正则表达式》课件

06
CATALOGUE
正则表达式的扩展与优化
正则表达式的扩展(如Unicode、命名组等)
Unicode支持
正则表达式内置了对Unicode字符集 的支持,可以使用诸如`uXXXX`的语 法来表示任意Unicode字符。
命名组
通过使用命名组,可以将匹配的子模 式进行有意义的命名,方便后续引用 和处理。
正则表达式在线测试工具是一种方便快捷的工具,用于测试 和验证正则表达式的正确性。通过在线测试工具,用户可以 输入正则表达式和测试字符串,并实时查看匹配结果,从而 快速定位问题并进行调整。
常用的正则表达式在线测试工具包括Regex101、RegExr、 RegexPal等。这些工具通常提供丰富的正则表达式语法高亮 显示、匹配模式选择、可视化匹配过程等功能,帮助用户更 好地理解和使用正则表达式。
字符串分割
总结词
正则表达式还可以用于字符串的分割操 作,将一个字符串按照特定的模式分割 成多个部分。
VS
详细描述
在字符串分割中,正则表达式可以用来将 一个字符串按照特定的模式分割成多个部 分。例如,可以使用正则表达式来将一个 包含逗号分隔的字符串分割成多个独立的 元素,或者将一个包含特定分隔符的字符 串分割成多个段落或行。
《正则表达式》 PPT课件
目录
• 正则表达式概述 • 正则表达式的语法规则 • 正则表达式的应用实例 • 正则表达式的常见问题与解决方案 • 正则表达式的工具与库 • 正则表达式的扩展与优化
01
CATALOGUE
正则表达式概述
什么是正则表达式
总结词
正则表达式是一种用于描述字符串中模式的强大工具。
04
CATALOGUE
正则表达式的常见问题与解决方案

常用正则表达式大全!(例如:匹配中文、匹配html)

常用正则表达式大全!(例如:匹配中文、匹配html)
说明: //u0000-u00ff.包含unicode单字节编码( 0-255编码)包含基本控制字符和拉丁文字母。 采用该否定表达式,粗略判断是否含有中文。
具体的匹配中文及字符方法:/[\u4E00-\u9FA5\uF900-\uFA2D]/
说明: u4e00-u9fbf : unicode CJK(中日韩)统一表意字符。u9fa5后至u9fbf为空
匹配双字节字符(包括汉字在内):[^x00-xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/
匹配首尾空格的正则表达式:(^s*)|(s*$)
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
(5)应用:利用正则表达式限制网页表单里的文本框输入内容
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'') "onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^u4E00-u9FA5]/g,''))"
用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData(''text'',clipboardData.getData(''text'').replace(/[^d]/g,''

正则表达式

正则表达式

正则表达式(I)正则表达式是由英文词语regular expression翻译过来的,就是符合某种规则的表达式。

正则表达式在软件开发中应用非常广泛,例如,找出网页中的超链接,找出网页中的email 地址,找出网页中的手机号码,判断输入的内容是否全部是数字,是否满足某种日期格式等等。

可以将正则表达式理解为一种对文字进行模糊匹配的语言,它用一些特殊的符号(称为元字符)来代表具有某种特征的一组字符以及该组字符重复出现的次数。

例如,对于正则表达式“\d{5}(-\d{4})?”,\d就是一个元字符,它表示一个数字字,{5}表示紧靠它前面的元素项连续重复5次,\d和{5}的组合\d{5}就表示匹配任意连续的5个数字字符;-\d{4}匹配的是一个连字号(-)后加上4个任意的数字,(-\d{4})?表示连字号(-)和后面的4个数字可有可无。

对于整个正则表达式“\d{5}(-\d{4})?”,表示要么是5个连续的数字字符,要么是5个连续的数字后加上一个连字号(-)、再加上4个连续的数字组成的10个字符。

正则表达式中的圆括号除了能将多个元素组合成一个可统一操作的组合项外,它所括起来的表达式部分还成为了一个子匹配(也叫子表达式),也就是说,我们可以用圆括号在一个长的正则表达式中划分出子表达式。

这样,除了可以得到整个正则表达式的匹配结果外,还可以单独得到每个子表达式部分所匹配的结果。

要灵活运用正则表达式,必须了解其中各种元字符的功能。

元字符从功能上大致分为:限定符、选择匹配符、分组组合和反向引用符、特殊字符、字符匹配符、定位符。

限定符用于指定其前面的字符或组合项连续出现多少次,下面是各种限定符及其含义:●{n} 规定前面的元素或组合项的连续出现n 次●{n,} 规定前面的元素或组合项至少连续出现n 次●{n,m } 规定前面的元素或组合项至少连续出现n 次,至多连续出现m 次●+ 规定前面的元素或组合项必须出现一次或连续多次,等效于{1,}●* 规定前面的元素或组合项可以出现零次或连续多次,等效于{0,}●? 规定前面的元素或组合项出现零次或一次,等效于{0,1}默认情况下,正则表达式使用最长(也叫贪婪)匹配原则。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文分十四个类别对正则表达式的意义进行了解释,这十四各类别是:字符/字符类/预定义字符类/POSIX字符类/ng.Character类/Unicode块和类别的类/边界匹配器/Greedy数量词/Reluctant数量词/Possessive数量词/Logical运算符/Back引用/引用/特殊构造。

1.1.字符x 字符 x。

例如a表示字符a\\ 反斜线字符。

在书写时要写为\\\\。

(注意:因为java在第一次解析时把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义字符,包括1.1的\\,而又带有\的都要写两次)\0n 带有八进制值 0的字符 n (0 <= n <= 7)\0nn 带有八进制值 0的字符 nn (0 <= n <= 7)\0mnn 带有八进制值 0的字符 mnn(0 <= m <= 3、0 <= n <= 7)\xhh 带有十六进制值 0x的字符 hh\uhhhh 带有十六进制值 0x的字符 hhhh\t 制表符 ('\u0009')\n 新行(换行)符 ('\u000A')\r 回车符 ('\u000D')\f 换页符 ('\u000C')\a 报警 (bell) 符 ('\u0007')\e 转义符 ('\u001B')\cx 对应于 x 的控制符1.2.字符类[abc] a、b或 c(简单类)。

例如[egd]表示包含有字符e、g或d。

[^abc] 任何字符,除了 a、b或 c(否定)。

例如[^egd]表示不包含字符e、g或d。

[a-zA-Z] a到 z或 A到 Z,两头的字母包括在内(范围)[a-d[m-p]] a到 d或 m到 p:[a-dm-p](并集)[a-z&&[def]] d、e或 f(交集)[a-z&&[^bc]] a到 z,除了 b和 c:[ad-z](减去)[a-z&&[^m-p]] a到 z,而非 m到 p:[a-lq-z](减去)1.3.预定义字符类(注意反斜杠要写两次,例如\d写为\\d). 任何字符(与行结束符可能匹配也可能不匹配)\d 数字:[0-9]\D 非数字: [^0-9]\s 空白字符:[ \t\n\x0B\f\r]\S 非空白字符:[^\s]\w 单词字符:[a-zA-Z_0-9]\W 非单词字符:[^\w]1.4.POSIX 字符类(仅 US-ASCII)(注意反斜杠要写两次,例如\p{Lower}写为\\p{Lower})\p{Lower} 小写字母字符:[a-z]。

\p{Upper} 大写字母字符:[A-Z]\p{ASCII} 所有 ASCII:[\x00-\x7F]\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]\p{Digit} 十进制数字:[0-9]\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]\p{Print} 可打印字符:[\p{Graph}\x20]\p{Blank} 空格或制表符:[ \t]\p{Cntrl} 控制字符:[\x00-\x1F\x7F]\p{XDigit} 十六进制数字:[0-9a-fA-F]\p{Space} 空白字符:[ \t\n\x0B\f\r]ng.Character 类(简单的 java 字符类型)\p{javaLowerCase} 等效于 ng.Character.isLowerCase()\p{javaUpperCase} 等效于 ng.Character.isUpperCase()\p{javaWhitespace} 等效于 ng.Character.isWhitespace()\p{javaMirrored} 等效于 ng.Character.isMirrored()1.6.Unicode 块和类别的类\p{InGreek} Greek 块(简单块)中的字符\p{Lu} 大写字母(简单类别)\p{Sc} 货币符号\P{InGreek} 所有字符,Greek 块中的除外(否定)[\p{L}&&[^\p{Lu}]] 所有字母,大写字母除外(减去)1.7.边界匹配器^ 行的开头,请在正则表达式的开始处使用^。

例如:^(abc)表示以abc开头的字符串。

注意编译的时候要设置参数MULTILINE,如 Pattern p = pile(regex,Pattern.MULTILINE);$ 行的结尾,请在正则表达式的结束处使用。

例如:(^bca).*(abc$)表示以bca开头以abc结尾的行。

\b 单词边界。

例如\b(abc)表示单词的开始或结束包含有abc,(abcjj、jjabc 都可以匹配)\B 非单词边界。

例如\B(abc)表示单词的中间包含有abc,(jjabcjj匹配而jjabc、abcjj不匹配)\A 输入的开头\G 上一个匹配的结尾(个人感觉这个参数没什么用)。

例如\\Gdog表示在上一个匹配结尾处查找dog如果没有的话则从开头查找,注意如果开头不是dog 则不能匹配。

\Z 输入的结尾,仅用于最后的结束符(如果有的话)行结束符是一个或两个字符的序列,标记输入字符序列的行结尾。

以下代码被识别为行结束符:‐新行(换行)符 ('\n')、‐后面紧跟新行符的回车符 ("\r\n")、‐单独的回车符 ('\r')、‐下一行字符 ('\u0085')、‐行分隔符 ('\u2028') 或‐段落分隔符 ('\u2029)。

\z 输入的结尾当编译模式时,可以设置一个或多个标志,例如Pattern pattern = pile(patternString,Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE); 下面六个标志都是支持的:‐CASE_INSENSITIVE:匹配字符时与大小写无关,该标志默认只考虑US ASCII字符。

‐UNICODE_CASE:当与CASE_INSENSITIVE结合时,使用Unicode字母匹配‐MULTILINE:^和$匹配一行的开始和结尾,而不是整个输入‐UNIX_LINES:当在多行模式下匹配^和$时,只将'\n'看作行终止符‐DOTALL: 当使用此标志时,.符号匹配包括行终止符在内的所有字符‐CANON_EQ: 考虑Unicode字符的规范等价1.8.Greedy 数量词X? X,一次或一次也没有X* X,零次或多次X+ X,一次或多次X{n} X,恰好 n 次X{n,} X,至少 n 次X{n,m} X,至少 n 次,但是不超过 m 次1.9.Reluctant 数量词X?? X,一次或一次也没有X*? X,零次或多次X+? X,一次或多次X{n}? X,恰好 n 次X{n,}? X,至少 n 次X{n,m}? X,至少 n 次,但是不超过 m 次1.10.Possessive 数量词X?+ X,一次或一次也没有X*+ X,零次或多次X++ X,一次或多次X{n}+ X,恰好 n 次X{n,}+ X,至少 n 次X{n,m}+ X,至少 n 次,但是不超过 m 次Greedy,Reluctant,Possessive的区别在于:(注意仅限于进行.等模糊处理时)greedy量词被看作“贪婪的”,因为它第一次就读入整个被模糊匹配的字符串。

如果第一个匹配尝试(整个输入字符串)失败,匹配器就会在被匹配字符串中的最后一位后退一个字符并且再次尝试,重复这个过程,直到找到匹配或者没有更多剩下的字符可以后退为止。

根据表达式中使用的量词,它最后试图匹配的内容是1 个或者0个字符。

但是,reluctant量词采取相反的方式:它们从被匹配字符串的开头开始,然后逐步地一次读取一个字符搜索匹配。

它们最后试图匹配的内容是整个输入字符串。

最后,possessive量词总是读完整个输入字符串,尝试一次(而且只有一次)匹配。

和greedy量词不同,possessive从不后退。

1.11.Logical 运算符XY X 后跟 YX|Y X 或 Y(X) X,作为捕获组。

例如(abc)表示把abc作为一个整体进行捕获1.12.Back 引用\n 任何匹配的 nth捕获组捕获组可以通过从左到右计算其开括号来编号。

例如,在表达式 ((A)(B(C)))中,存在四个这样的组:1 ((A)(B(C)))2 \A3 (B(C))4 (C)在表达式中可以通过\n来对相应的组进行引用,例如(ab)34\1就表示ab34ab,(ab)34(cd)\1\2就表示ab34cdabcd。

1.13.引用\ Nothing,但是引用以下字符\Q Nothing,但是引用所有字符,直到 \E。

QE之间的字符串会原封不动的使用(1.1中转义字符的除外)。

例如, ab\\Q{|}\\\\E可以匹配ab{|}\\\E Nothing,但是结束从 \Q开始的引用1.14.特殊构造(非捕获)(?:X) X,作为非捕获组(?idmsux-idmsux) Nothing,但是将匹配标志由 on 转为 off。

比如:表达式 (?i)abc(?-i)def 这时,(?i) 打开不区分大小写开关,abc 匹配idmsux说明如下:‐i CASE_INSENSITIVE :US-ASCII 字符集不区分大小写。

(?i)‐d UNIX_LINES : 打开UNIX换行符‐m MULTILINE :多行模式(?m)UNIX下换行为\nWINDOWS下换行为\r\n(?s)‐u UNICODE_CASE : Unicode 不区分大小写。

(?u)‐x COMMENTS :可以在pattern里面使用注解,忽略pattern里面的whitespace,以及"#"一直到结尾(#后面为注解)。

(?x)例如(?x)abc#asfsdadsa可以匹配字符串abc(?idmsux-idmsux:X) X,作为带有给定标志 on - off 的非捕获组。

与上面的类似,上面的表达式,可以改写成为:(?i:abc)def,或者 (?i)abc(?-i:def) (?=X) X,通过零宽度的正 lookahead。

相关文档
最新文档