正则表达式可以是任何东西,从结束符号to到两个正则表达式(R 1 + R 2 )的并置(R 1 R 2 )或其闭包R 1 *的结合。
正则表达式的示例:
- 以两个零开头的0和1的所有字符串的集合的正则表达式:
00(0+1)*
- 所有0和1的字符串的集合的正则表达式,其偶数为0,后跟奇数为1:
(00)*1(11)*
- 所有包含至少一个0和至少两个1的0和1的所有字符串的集合的正则表达式:
00*11(0+1)* + 0111*(0+1)*
正则表达式可接受的字符串,带有交替的0和1 –
- ∈(无输入,0和1)
- 010101…..(以0开头,然后是1的字符串,依此类推)。
- 101010…..(以1开头,后跟0的字符串,依此类推)。
现在,所有由交替的0和1组成的所有字符串的集合的正则表达式为(01)* ,它可以接受∈,01,0101,010101 ….. etc等,但这限制了该字符串,因为它总是以0开头只要。
同样,表达式(10)*将接受∈,10、1010、101010…等,但这也限制了字符串,因为它始终只能以1开头。
因此,我们引入1(01)*和0(10)*来弥补各自情况下的差距。
而1(01)*打破字符串的从0开始,0(10)的限制*断裂同样为从1开始的字符串。
因此,最后的表达式是–
(01)* + (10)* + 0(10)* + 1(01)*