正则表达式忽略分组顺序匹配(前瞻、后顾、负前瞻、负后顾的应用)

前瞻: ^ab(?=cd)$   匹配后面带有cd的ab,如果提取出来只有ab

例:  abcd-匹配   abef-不匹配

后顾: ^(?<=ab)cd$  匹配前面带有ab的cd,如果提取出来只有cd

例: abcd-匹配     efcd-不匹配

负前瞻: ^ab(?!cd)$  匹配后面不带cd的ab

例: abcd-不匹配   abef-匹配

负后顾: ^(?<!ab)cd$  匹配前面不带ab的cd

例: abcd-不匹配   efcd-匹配

应用


理解: "[0-9a-zA-Z]+"这部分很好理解,只匹配字母和数字,"(?!\d+$)" 这部分可以理解为不以纯数字结尾, 例如"394293"就违反了这一规则, 且"(?![a-zA-Z]+$)"表示不以纯字母结尾,

例如AbcD就违反了这一规则

原文地址:https://www.cnblogs.com/xiaxiaosheng/p/11637165.html

时间: 2024-11-12 02:00:18

正则表达式忽略分组顺序匹配(前瞻、后顾、负前瞻、负后顾的应用)的相关文章

javascript 正则表达式之分组与前瞻匹配详解

本文主要讲解javascript 的正则表达式中的分组匹配与前瞻匹配的,需要对正则的有基本认识,本人一直对两种匹配模棱不清.所以在这里总结一下,如有不对,还望大神指点. 1.分组匹配: 1.1捕获性分组匹配 () 2.2非捕获性分组匹配 (?:)2前瞻匹配: 2.1正向前瞻匹配: (?=表达式) 后面一定要匹配有什么 2.2反向前瞻匹配: (?!表达式) 后面一定不能要有什么 1.1.捕获性分组匹配 () var str1 = "holle word 123456 can 12s a 123 a

python正则表达式(8)--分组、后向引用、前(后)向断言

无名.有名分组 (1)正则表达式-无名分组 从正则表 达式的左边开始看,看到的第一个左括号"("表示表示第一个分组,第二个表示第二个分组, 依次类推. 需要注意的是,有一个隐含的全局分组(就是索引号为0的分组),就是整个正则 表达式匹配的结果 (2)正则表达式-有名分组 命名分组就是给具体有默认分组编号的组另外再起一个别名,方便以后的引用. 命令分组的语法格式如下: (?P<name>正则表达式) 语法格式中的字符P必须是大写的"P",name是一个合法

JS正则表达式的分组匹配

什么是分组 通俗来说,我理解的分组就是在正则表达式中用()包起来的内容代表了一个分组,像这样的: var reg = /(\d{2})/ reg.test('12'); //true 这里reg中的(/d{2})就表示一个分组,匹配两位数字 分组内容的的形式 一个分组中可以像上面这样有一个具体的表达式,这样可以优雅地表达一个重复的字符串 /hahaha/ /(ha){3}/ 这两个表达式是等效的,但有了分组之后可以更急简洁. 体格分组中还可以有多个候选表达式,例如 var reg = /I co

如何解决python的re模块group、groups与findall遇见正则表达式中分组&quot;()&quot;后产生的”眩晕反应“

转载请注明出处:https://www.cnblogs.com/oceanicstar/p/9244783.html 直接先上例子 >>> re.search('(book+)', 'mebookbookme').groups() ('book',) >>> re.search('(book+)', 'mebookbookme').group() 'book' >>> re.search('(book)+', 'mebookbookme').group

JavaScript正则表达式之分组匹配

语法 元字符:(pattern) 作用:用于反复匹配的分组 属性$1~$9 如果它(们)存在,用于得到对应分组中匹配到的子串 \1或$1 用于匹配第一个分组中的内容 \2或$2 用于匹配第一个分组中的内容 ... \9或$9 用于匹配第一个分组中的内容 用法示例 var reg = /(A+)((B|C|D)+)(E+)/gi;//该正则表达式有4个分组 //对应关系 //RegExp.$1 <-> (A+) //RegExp.$2 <-> ((B|C|D)+) //RegExp.

JS正则表达式获取分组内容实例

JS正则表达式获取分组内容. 支持多次匹配的方式: var testStr = "now test001 test002"; var re = /test(\d+)/ig; var r = ""; while(r = re.exec(testStr)) { alert(r[0] + " " + r[1]); } 此外也可以用testStr.match(re),但是这样的话就不能有g的选项,而且只能得到第一个匹配. 另外备忘一下:正则表达式对象的属

关于在Eclipse中使用正则表达式替换的一点记录(使用正则表达式的分组)

今天在工作中遇到了点替换的麻烦事,由于数据类进行了变动,具体情况是这样的,需要将下面的代码: player.skillData[i].name 替换为: player.skillData.getSkillInfo(i).name 具体来说就是将[i]改为getSkillInfo(i),不过遇到的问题是,需要修改的数量太多,200+个使用到的地方,而且括号中还不一定是“i”,可能是各种各样的形式(比如“index”.“_myIndex”等),总不能手动的一个一个改吧... 最后发现Eclipse是

正则表达式中分组功能高级用法

通过将部分正则表达式用括号括住来实现分组捕获的用法大部分人都很熟悉,如/.+(\d+).+/捕获字符串中的所有数字部分,然后通过组号就可以抽取出各分组匹配的字符文本或者通过反向引用的方式对分组中的文本进行替换.但是除了不同的分组用法以外,正则表达式引擎还提供了一些高级的分组功能,下面介绍部分比较常用的特殊分组: 1.非捕获分组( non-capturing group) 使用语法:(?:regex)这里的?和:都是语法的组成部分:这种分组正则表达式引擎不会捕获它所匹配的内容即不会为非捕获型分组分

正则表达式、常用的匹配总结

1.正则表达式:我的理解就是,记录文本规则的代码,我主要运用它在.net表单验证中. 2.学习正则表达是的工具下载链接:http://www.unibetter.com/deerchao/downloads/RegexTester.zip 3.工具使用说明: 4.正则表达式有多种不同的风格.下表是在PCRE中元字符及其在正则表达式上下文中的行为的一个完整列表: 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个向后引用.或一个八进制转义符.例如,“n”匹配字符“n”.“\n”