正则表达式

我们可以使用上一章学过的符号来表示大多数的规则,但是在表示数字程序规则时可能会遇到一些问题。这些规则需要用到一些我们没有讲解过的符号。我们还不知道如何表达开始和结束输入、可选字符、字符范围等。

这些规则由正则表达式(Regular Expression)定义。正则表达式适合定义一些小型的语法规则,例如单词或是数字等。正则表达式不支持复杂的规则,但它清晰且精确地界定了输入是否符合规则。下面是正则表达式的基本规则:

语法表示 作用
. 要求任意字符
a 要求字符 a
[abcdef] 要求 abcdef 中的任意一个
[a-f] 要求按照字母顺序,af 中的任意一个
a? 要求 a 字符或什么都没有,即 a 为可选的
a* 要求有 0 个或多个字符 a
a+ 要求有 1 个或多个字符 a
^ 开始输入
$ 结束输入

上面是我们目前需要的一些基本规则。如果你对正则表达式感兴趣,这里是关于它的一个完整的教程。

mpc 中,我们需要将正则表达式包裹在一对 / 中。例如,Number 可以用 /-?[0-9]+/ 来表示。