RegexGolf是一款游戏,旨在帮助玩家学习正则表达式(Regex)。玩家将被要求使用最少的字符来匹配一系列字符串,以达到最佳的正则表达式。游戏中的每个关卡都有一组字符串,玩家必须使用最少的字符来匹配所有字符串,以获得最高分数。
- Warmup
1 | foo |
第一题算作热身,很简单,直接上答案。
- Anchors
1 | ick$ |
左侧的每个单词都是以ick结尾的,考察
文本末尾
的使用。
- It never ends
1 | fu\b |
左侧的每个单词都是以fu结尾,但是题目限制不能使用$符号,考察
单词边界
的使用。
- Ranges
1 | ^[a-f]{4,6} |
可以看出左侧的字母范围在a-f,并且字母长度在4-6位,考察
范围
的使用。
- Backrefs
1 | (\w{3})\w?.*?\1 |
左侧每个单词的首尾都是相同的3个字母,考察
捕获组
的使用。
- Abba
1 | ^(?!.*(.)(.)\2\1) |
右侧单词中都包含
adda
形式的字母,匹配不带有abba
形的单词,考察捕获组
、否定型前视
的使用。
- A man, a plan
1 | ^(.)(.).*\2\1$ |
左侧单词均为回文字符串,捕获前两个字符放在末尾并调换,考察
文本末尾
、文本开头
、捕获组
的使用。
- Prime
1 | ^(?!(.{2,})\1+$) |
右侧的字母x数量均为合数,因此匹配不是合数的,考察
文本末尾
、否定型前视
、捕获组
、范围
的使用。
- Four
1 | \w*(\w)\w{1,3}\1\w{1,3}\1\w{1,3}\1\w* |
左侧单词均有一个字母重复出现四次,并且它们相邻的字母范围在1-3之间,考查
捕获组
、范围
的使用。
- Order
1 | ^\w{5}[^e]?$ |
左侧单词的长度范围在5-6之间,并且不以字母e结尾,考查
文本开头
、文本末尾
、范围
的使用。
- Triples
1 | ^(14|31|32|36|39|40|44|71|74|81|87|90|95)|(50|00|003|60|09|12|015|70|06)$ |
用正则表达式匹配7的倍数,水平有限,直接暴力破解😜。
- Glob
1 | ^(.*) .+ \1$|^(.*)\*(.*) .+ \2.+\3$|^(.*)\*(.+)\*(.*) .+ .+\5.+$ |
分几种情况叠加匹配。
天赋有限,暂时攻到第12关,后续再更。