练习网站:Regex Golf (alf.nu)
我太菜了,做到第十道题就觉得难了,说来惭愧,第十道都卡了好久。
Warmup
答案:foo
思路:第一题没什么说的。
Anchors
答案:ick$
思路:匹配结尾为ick的
It never ends
答案:u(?!.)
思路:这道题不能使用$,所以换个写法,匹配u且u后面不包括其他任何字符
Ranges
答案:[a-f]{4,}
思路:就是直接匹配所有字符,并且都要在a-f这个范围
Backrefs
答案:(...).*\1
思路:先匹配三个,然后在后面再匹配第一个标记
Abba
答案:^(?!.*(.)(.)\2\1)
思路:用(.)(.)匹配到前面两个,比如abba,他将会匹配到ab,然后\2\1就是ba,就匹配上了不需要匹配的,然后加上.*就可以匹配到整个不需要匹配的单词了,然后再用?!取反,现在需要匹配的就可以匹配上了,最后给里面的标记,匹配开头,就好了
A man, a plan
答案:^(.)(.).*\2\1$
思路:这个其实就是第一位跟倒数第一位第二位跟倒数第二位相同的
Prime
答案:^(?!(..+)\1+$)
思路:这个的规律就是左边的都是单数右边的都是双数,匹配双数然后取反就好了
Four
答案:(.).\1.*\1.\1
思路:先匹配到xyx这种的,标记第一个的x,然后再匹配x.x就好了
Order
答案:^.{5}[^e]?$
思路:这个其实就是规律难找,我找了好久都没找到规律,然后后面发现了其实左边第二个字母在字母表中会在第一个字母后面,以此类推,这个实现有点难,就找第二个规律,就是先匹配5个,然后第六个不能是e,只能为空或者其他字符,同时第六个也是最后一位数