正则表达式——字符组运算

以上介绍了字符组的基本功能,它们在常用的语言中都有提供;还有些语言中为字符组提供了更强大的功能,比如Java和.NET就提供了字符组运算的功能,可以在字符组内进行集合运算,在某些情况下这种功能非常实用。

如果要匹配所有的元音字母(为讲解简单考虑,暂时只考虑小写字母的情况),可以用[aeiou],但是要匹配所有的辅音字母却没有什么方便的办法,最直接的写法是[b-df-hj-np-tv-z],不但烦琐,而且难理解。其实,从26个字母中"减去"元音字母,剩下的就是辅音字母,如果有办法做这个"减法",就方便多了。

Java语言中提供了这样的字符组:[[a-z]&&[^aeiou]],虽然初看有点古怪,但仔细看看,也不难理解。[a-z]表示26个英文字母,[^aeiou]表示除元音字母之外的所有字符(还包括大写字母、数字和各种符号),两者取交集,就得到"26个英文字母中,除去5个元音字母,剩下的21个辅音字母"。

.NET中也有这样的功能,只是写法不一样。同样是匹配辅音字母的字符组,.NET中写作[a-z-[aeiou]],其逻辑是:从[a-z]能匹配的26个字符中,"减去"[aeiou]能匹配的元音字母。相对于Java,这种逻辑更符合直觉,但写法却有点古怪--不是[[a-z]-[aeiou]],而是[a-z-[aeiou]]。例1-20集中演示了Java和.NET中的字符组运算。

例1-20  字符组运算

// Java
"a".matches("^[[a-z]&&[^aeiou]]$");     //  => True
"b".matches("^[[a-z]&&[^aeiou]]$");     //  => False
// .NET
Regex.IsMatch("^[a-z-[aeiou]]$", "a");  //  => True
Regex.IsMatch("^[a-z-[aeiou]]$", "b");  //  => False  

原文地址:https://www.cnblogs.com/gaara0305/p/9815561.html

时间: 2024-10-09 19:27:16

正则表达式——字符组运算的相关文章

正则表达式——字符组中的转义

??在正则表达式中,如果需要表示作为元字符的普通字符(比如*.?.(.等),就需要使用转义这一点不存在疑义.特殊的是,常见的元字符出现在字符组内部基本都不算元字符,也就是说,它们在字符组内部出现时,不需要转义. 原文地址:https://www.cnblogs.com/gaara0305/p/10102946.html

正则表达式一元字符与字符组

1.^   符   ---代表一行的开始 "category".match(/^cat/); //返回以c开头的紧接一个a,紧接一个t的文本数组! 2.$   符   ---代表一行的结束 alert("category".match(/ry$/)); //返回以y结尾,紧接着前面一个是r的文本数组 输出:ry 3.[........]    表示字符组用于匹配一串字符 如果我们需要搜索的单词是"gray",同时又不确定他是否写作"gr

正则表达式的字符组取反(负值字符集合/范围)^必须出现在起始位置

今天发现[?^a]匹配的匹配的是:?^a,心想^a不是字符组取反吗?难道[?]是新语法? 最后才注意到字符组取反(负值字符集合/范围)的语法规则: 对于字符组取反(负值字符集合/范围),^必须出现在起始位置. 如[^a],意为匹配除a外的所有字符,但若是[#^a],它就不是字符组取反了--而仅仅是一个普通的字符组,意为匹配#^a 在<学习正则表达式>一书中有此规定的表述:

正则表达式入门(五)字符组

如果你想匹配10-19的偶数,可以这样: \b[1][24680]\b 也可以用下面的表达式找0-99的偶数: \b[24680]\b|\b[1-9][24680]\b 字符组取反对字符组取反会匹配与字符组内容不匹配的字符.如果你不想匹配元音字符,可以这样写 [^seiou] 起始位置的脱字符的意思就是,我不想匹配这些字符.并集与差集java支持正则的并集差集功能.如果要两个字符组并集: [0-3[6-9]] 这里会匹配0到3之间或者6到9之间的数字.匹配差集: [a-z[^m-r]] 匹配a到

正则表达式-字符表

. 点号 匹配任何单个字符(注:点号在字符组内不算元字符) * 星号 表示之前的元素出现任意次数或0次 ? 问号 前面元素出现0次或1次 + 加号 前面元素出现1次以上 - 连字符 注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出现在字符组的开头,则只能表示连字符本身 ^ 脱字符 表示开头.注意:^在字符组的头部,将转换成排除型字符 $ 美元符 表示结尾. \ 转义符   [ ] 字符组 范围描述符.[a-z]表示从a到z之间的任意一个. \w   英文字母

正则表达式-字符类减法

字符类减法: [base_group - [excluded_group]] 一个字符类定义一组字符. 字符类减法将产生一组字符,该组字符是从一个字符类中排除另一个字符类中的字符的结果. 字符类减法表达式具有以下形式: [ base_group -[ excluded_group ]] 方括号 ([]) 和连字符 (-) 是强制的. base_group 是正字符组或负字符组. excluded_group 部分是另一个正字符组或负字符组,或者是另一个字符类减法表达式(即,可以嵌套字符类减法表达

5 - SQL Server 2008 之 四则运算、比较运算、逻辑运算及字符连接运算

四则运算如下: --加减乘除(+.-.*.\.%)取余运算 SELECT --加法运算 3+5 AS 加法结果1, 3.5+6 AS 加法结果2, --减法运算 10-2.5 AS 减法结果1, 15.5+5.5 AS 减法结果2, --乘法运算 5*3 AS 乘法结果1, 1.5*2 AS 乘法结果2, --除法运算 25/6 AS 除法结果1, 35*3.5 AS 除法结果2, --取余运算 9%4 AS 取余结果1, 10%5 AS 取余结果2 GO 结果: 比较运算: --比较(>.<

JavaScript正则表达式-字符

JavaScript正则表达式字符包括两类: 1.普通字符. 2.转义字符. 普通字符 大小写字母.数字.其他任何符号. 转义字符 转义字符 含义 \f 换页符 \n 换行符 \r 回车符 \t 制表符 \b 退格符 \o 空字符 \xnn 由十六进制数nn指定的ASCII码对应的字符 \uxxx 由十六进制数xxxx指定的Unicode字符 \\ 反斜线 ^ 要匹配"^"字符本身需要使用"\^" $ 要匹配"$"字符本身需要使用"\$

C#正则表达式获取组名,按照组名输出匹配内容

最近写了个正则表达式匹配的工具,可以按照组名输出匹配内容,还是挺方便的,代码留存一下,以后用的话,直接copy了. Regex regex = new Regex(this.textBoxRegex.Text); Match result = regex.Match(this.textBoxText.Text); if (result.Success) { StringBuilder sb = new StringBuilder(); foreach (var groupName in rege