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

今天发现[?^a]匹配的匹配的是:?^a,心想^a不是字符组取反吗?难道[?]是新语法? 最后才注意到字符组取反(负值字符集合/范围)的语法规则:

对于字符组取反(负值字符集合/范围),^必须出现在起始位置。

如[^a],意为匹配除a外的所有字符,但若是[#^a],它就不是字符组取反了--而仅仅是一个普通的字符组,意为匹配#^a

在《学习正则表达式》一书中有此规定的表述:

时间: 2024-08-30 01:10:11

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

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

如果你想匹配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到

标准C语言的三字符组及替换拼写的分隔符

标准C语言中包括一组三字符组,使C语言程序可以只用ISO 646-1083不变代码集编写,这是七比特ASCII代码集的子集,是许多非英语国家字符集公用的代码集.三字符组以两个连续问号开头,见上图.标准C语言还提供一些记号的重拼和定义一些运算符的宏替换的头文件<iso646.h>,但与三字符组不同的是,这些替换无法在字符串型常量和字符型常量中识别. 源程序中三字符组的转换发生在词法分析(转换为记号)之前和识别字符串型常量和字符型常量中的转义字符之前.标准C语言只能识别以上9个三字符组,所有其他字

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

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

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

以上介绍了字符组的基本功能,它们在常用的语言中都有提供:还有些语言中为字符组提供了更强大的功能,比如Java和.NET就提供了字符组运算的功能,可以在字符组内进行集合运算,在某些情况下这种功能非常实用. 如果要匹配所有的元音字母(为讲解简单考虑,暂时只考虑小写字母的情况),可以用[aeiou],但是要匹配所有的辅音字母却没有什么方便的办法,最直接的写法是[b-df-hj-np-tv-z],不但烦琐,而且难理解.其实,从26个字母中"减去"元音字母,剩下的就是辅音字母,如果有办法做这个&

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

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

正则表达式匹配包括换行符的所有字符

今天在Java中想使用正则表达式来获取一段文本中的任意字符. (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符. 查出了一个解决办法,经过一试,果然可以匹配包括换行符在内的任意字符,以下为正确的正则表达式匹配规则: ([\s\S]*)正则表达式匹配包括换行符的所有字符,布布扣,bubuko.com

一个通用的php正则表达式匹配或检测或提取特定字符类

在php开发时,日常不可或缺地会用到正则表达式,可每次都要重新写,有时忘记了某一函数还要翻查手册,所以,抽空写了一个关于日常所用到的正则表达式区配类,便于随便移置调用.(^_^有点偷懒). /*///////////////////////////////////////////////////////////// * 类MatchAll功能:主要用于php日常所用到的几种检测匹配或提取特定字符.// * 主要参数设置说明: $target_str 为目标字符即需要检测的字符或数字.// * $

C++001 有趣的三字符组

三字符序列表 转义前 转义后 ??= # ??( [ ??) ] ??/ ??< { ??> } ??' ^ ??! | ??- - 首先,我们来看一下两个程序段: 程序段1: int x = 1; //结果是多少?递增?????/ ++x; cout << x << endl; 程序段2: int x = 1; //结果是多少?递增?????/ ++x; cout << x << endl; 你能先把两个程序段的答案记在心里吗.稍后有用! 答案

Python字符窜取值

# coding:utf-8 msg = "hello world *te*st *?/ * / -*2ego2*n , -*= 123" #按索引取值 print(msg[0],type(msg))#取第一个值 print(msg[-1],type(msg))#取最后一个值 #按切片取值 print(msg[1:4],type(msg))#取固定范围值,顾头不顾尾:左闭右开:从前面取值; 从左往右,正向 print(msg[-3:-1],type(msg))#取固定范围值,顾头不顾尾