题目
给出下面正规表达式:(1)以 01 结尾的二进制数串 ;(2)能被 5 整除的十进制整数;(3)包含奇数个 1 或奇数个 0 的二进制数串; 解答:
给出下面正规表达式:
(1)以 01 结尾的二进制数串 ;
(2)能被 5 整除的十进制整数;
(3)包含奇数个 1 或奇数个 0 的二进制数串; 解答:
题目解答
答案
分析:
( 1 )分两部分考虑,一部分实现由 0 和 1 构成的任意串,一部分 01,两部分连接 到一起就可以了。本题答案为( 0|1 )* 01
(2)要求由 0~9 这 10个数字组成的字符串,并且不能以 0 开头,要能被 5整除。
要被 5 整除则需以 0 或 5 结尾。分两种情况考虑,
一是 1 位整数,那么该整数是 0 和 5;
另外一种情况是多位整数。 分 3 部分考虑: 末尾必须是 0 或 5,第 1 位必须不为 0, 中间部分任意。
本题答案为( 1|2|3|4|5|6|7|8|9 ) (0|1|2|3|4|5|6|7|8|9) *(0|5)|(0|5)
(3)
解析
步骤 1:以 01 结尾的二进制数串
- 二进制数串由 0 和 1 组成,可以是任意长度。
- 以 01 结尾意味着在任意长度的二进制数串后面加上 01。
- 因此,可以表示为 (0|1)*01,其中 (0|1)* 表示任意长度的 0 和 1 的组合。
步骤 2:能被 5 整除的十进制整数
- 十进制整数由 0 到 9 的数字组成,不能以 0 开头。
- 能被 5 整除的整数以 0 或 5 结尾。
- 一位整数可以是 0 或 5。
- 多位整数的第一位不能是 0,中间部分可以是任意数字,最后一位必须是 0 或 5。
- 因此,可以表示为 (1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(0|5) | (0|5)。
步骤 3:包含奇数个 1 或奇数个 0 的二进制数串
- 二进制数串由 0 和 1 组成,可以是任意长度。
- 包含奇数个 1 或奇数个 0 的二进制数串可以表示为 (0|1)*1(0|1)*1(0|1)*1(0|1)* | (0|1)*0(0|1)*0(0|1)*0(0|1)*。
- 但是,更简洁的表示方法是使用正则表达式 (0|1)*1(0|1)*1(0|1)* | (0|1)*0(0|1)*0(0|1)*0(0|1)*,其中 (0|1)* 表示任意长度的 0 和 1 的组合,1 和 0 分别表示奇数个 1 和奇数个 0。
- 二进制数串由 0 和 1 组成,可以是任意长度。
- 以 01 结尾意味着在任意长度的二进制数串后面加上 01。
- 因此,可以表示为 (0|1)*01,其中 (0|1)* 表示任意长度的 0 和 1 的组合。
步骤 2:能被 5 整除的十进制整数
- 十进制整数由 0 到 9 的数字组成,不能以 0 开头。
- 能被 5 整除的整数以 0 或 5 结尾。
- 一位整数可以是 0 或 5。
- 多位整数的第一位不能是 0,中间部分可以是任意数字,最后一位必须是 0 或 5。
- 因此,可以表示为 (1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(0|5) | (0|5)。
步骤 3:包含奇数个 1 或奇数个 0 的二进制数串
- 二进制数串由 0 和 1 组成,可以是任意长度。
- 包含奇数个 1 或奇数个 0 的二进制数串可以表示为 (0|1)*1(0|1)*1(0|1)*1(0|1)* | (0|1)*0(0|1)*0(0|1)*0(0|1)*。
- 但是,更简洁的表示方法是使用正则表达式 (0|1)*1(0|1)*1(0|1)* | (0|1)*0(0|1)*0(0|1)*0(0|1)*,其中 (0|1)* 表示任意长度的 0 和 1 的组合,1 和 0 分别表示奇数个 1 和奇数个 0。