你将学到
字面字符 随处匹配 点号 多个点号
步骤 · 9
- 01欢迎你,猎手讲解
- 02字面字符示例
- 03你的第一次狩猎狩猎
- 04随处匹配狩猎
- 05点号:任意字符狩猎
- 06处处通配狩猎
- 07不止一个点狩猎
- 08毕业狩猎狩猎
- 09入门完成讲解
正则入门:字面字符与点号
正则表达式(regex)是一段描述文本的简短规则。把一个字符串交给它,它只回答一个问题:这里面有没有匹配?在 Regex Hunter 里,这个答案决定了你的狩猎:正则必须抓住每个目标单词,放过每个无辜词。JavaScript、Python、各种搜索工具和大多数代码编辑器都内置了正则,所以在这里学到的东西,用处远不止这个游戏。
大多数正则都从字面字符开始。正则里的字母或数字就代表它自己,所以 ink 会依次寻找 i、n、k 三个字母,而不管它们出现在哪里。没有额外标记时,正则可以在字符串的任意位置匹配,这就是 ink 也能找到 pinky 和 inkwell 的原因。
第二个基本构件是点号。. 用任意单个字符填充一个位置:字母、数字、空格或符号都行。t.p 能匹配 tip、top 和 t-p,却永远匹配不了 tp,因为点号总是恰好占一个字符。连写几个点号,就能描述一段固定长度的间隔。字面文本和通配符这两个概念,是你今后写出的每个正则的基础。
示例
抓住
- sing
- ringer
- kingdom
放过
- sign
- grin
字面字符按顺序匹配,可以出现在单词的开头、中间或结尾。
抓住
- bag
- bug
- debug
放过
- bang
- gab
点号恰好代替 b 和 g 之间的一个字符,所以中间隔着两个字符的
bang会被放过。抓住
- road
- bread
- rinds
放过
- red
- rapid
- dark
两个点号就是恰好两个字符,所以 r 和 d 之间必须正好隔着两个字符。
抓住
- 3.5
- v3.5.1
放过
- 305
- 35
反斜杠让点号变回普通的句点。
常见错误
- 忘了正则可以在任意位置匹配。
art也会抓住start和party,所以要检查那些你本想放过的较长单词。 - 把 `.
当成句点。它匹配任意字符,所以1.5也能匹配125和1x5;要匹配真正的点号,请写\.`。 - 以为大小写无所谓。 正则默认区分大小写,
apple匹配不到Apple;加上i标志即可忽略大小写。
阅读规则:指南中的“字面字符” →反复操练:正则特训 →