杂项 RegexGolf通关笔记

RegexGolf是一款游戏,旨在帮助玩家学习正则表达式(Regex)。玩家将被要求使用最少的字符来匹配一系列字符串,以达到最佳的正则表达式。游戏中的每个关卡都有一组字符串,玩家必须使用最少的字符来匹配所有字符串,以获得最高分数。

  1. Warmup
1
foo

第一题算作热身,很简单,直接上答案。

  1. Anchors
1
ick$

左侧的每个单词都是以ick结尾的,考察文本末尾的使用。

  1. It never ends
1
fu\b

左侧的每个单词都是以fu结尾,但是题目限制不能使用$符号,考察单词边界的使用。

  1. Ranges
1
^[a-f]{4,6}

可以看出左侧的字母范围在a-f,并且字母长度在4-6位,考察范围的使用。

  1. Backrefs
1
(\w{3})\w?.*?\1

左侧每个单词的首尾都是相同的3个字母,考察捕获组的使用。

  1. Abba
1
^(?!.*(.)(.)\2\1)

右侧单词中都包含adda形式的字母,匹配不带有abba形的单词,考察捕获组否定型前视的使用。

  1. A man, a plan
1
^(.)(.).*\2\1$

左侧单词均为回文字符串,捕获前两个字符放在末尾并调换,考察文本末尾文本开头捕获组的使用。

  1. Prime
1
^(?!(.{2,})\1+$)

右侧的字母x数量均为合数,因此匹配不是合数的,考察文本末尾否定型前视捕获组范围的使用。

  1. Four
1
\w*(\w)\w{1,3}\1\w{1,3}\1\w{1,3}\1\w*

左侧单词均有一个字母重复出现四次,并且它们相邻的字母范围在1-3之间,考查捕获组范围的使用。

  1. Order
1
^\w{5}[^e]?$

左侧单词的长度范围在5-6之间,并且不以字母e结尾,考查文本开头文本末尾范围的使用。

  1. 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的倍数,水平有限,直接暴力破解😜。

  1. Glob
1
^(.*) .+ \1$|^(.*)\*(.*) .+ \2.+\3$|^(.*)\*(.+)\*(.*) .+ .+\5.+$

分几种情况叠加匹配。

天赋有限,暂时攻到第12关,后续再更。

-------------本文结束感谢您的阅读-------------
0%