javascript - 正则表达式 零宽断言该怎么理解?
高洛峰
高洛峰 2017-04-11 11:01:43
0
1
263

Regex Golf上的两道题:

第五题要求排除包含abba格式子字符串的字符串,如abba,commotive,trillion……

其中一个正确答案是/^(?!.*(.)(.)\2\1)/

abba格式用/(.)(.)\2\1/比较好解决,排除则是用的零宽断言的(?!exp),然后我对整个表达式理解的是:“开头位置之后跟的不是任意个字符+abba字符的字符串”,但如果这么理解的话,反过来“结尾位置之前不是abba字符+任意个字符的字符串”,即表达式/(?!(.)(.)\2\1.*)$/应该也是成立的啊,然而事实是这个表达式是错误的。


同样对于第七题,要求匹配内容为素数个x的字符串,如xx,xxx,xxxxx……

某一个正确答案是^(?!(xx+)\1+$),思路就是排除有大于等于2的因数的数目

同样我觉得(?!^(xx+)\1+)$应该也是可以的啊,但事实上这也是个错误答案。。。

感觉应该是自己对零宽断言理解不到位,但具体什么错在哪一直没能理解,求告知~

以及,是不是真的有必要把正则研究到Regex Golf题目的那种程度?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!