Regex Golf网址:https://alf.nu/RegexGolf
Regex Golf通关解答:Regex Golf通关解答-优快云博客
Regex Golf是一个用来训练正则表达式技巧的网站。进入网站页面后,点击右侧题目列表,页面中央会出现一个正则表达式输入框,两列文本:左侧一列为待匹配文本,右侧一列为不能匹配文本。玩家需要在输入框中输入正则表达式,来尽量匹配左侧的文本列表,尽量不要匹配右侧的文本列表。第一题Warmup和第二题Anchors算是引导题目。以Warmup一题为例:
经过简单的观察即可以发现,左侧待匹配文本中均包含字符串“foo”,而右侧文本中均没有“foo”。因此输入“foo”即可完成本题的解答。
Anchors一题的规律也非常明显,匹配以k结尾的字符串,所以输入“k$”即可完成解答。
要特殊说明一下的是Anchors这一题的提示语:“You are deducted one point per character you use, and ten if you match something you shouldn't.”我们在解答完成一道题目后,题目下方会出现解答出这个题目的玩家列表,显示他所使用的字符个数,还可以贴心的让你写你的解题感言。但是网站上好像没有什么分数啊?
这其实与网站的改版有关。早些年的时候,这个网站的计分机制是给每个玩家1000初始计分,你每使用一个字符就减一分,每当你匹配到一条右侧列表中的文本时就减十分,然后按分数高低进行排名。后来可能感觉这样计分既麻烦又不直观,就取消了,直接按在解答正确情况下所用字符数多少来进行排名。但是这个引导性质的提示并没有被修改,所以做这一题时,可不要被这个提示误导了。
与之类似的还有A man, a plan一题的提示语:“You're allowed to cheat a little. Even in hard mode, words will be no longer than 13 characters.”重点在于这个“hard mode”,即困难模式,当年与之对应的,还有一个“normal mode”普通模式。其区别在于,普通模式下,你的正则表达式只要能满足屏幕上显示的这些用例就算解答成功。但困难模式则需要你找出作者深层次的意图,以匹配更普世的情况。还是以Anchors为例,在普通模式下“k$”可以成功解题,但在困难模式下,则需要“ick$”才能解答成功。现在网站上已经没有困难模式了,不过偶尔按困难模式要求一下自己,找找深层规律,也是一件有意思的事情。