正则表达式 | 含义 | 示例 |
---|---|---|
( 0 + 1 ) ∗ (0+1)^* (0+1)∗ | 由0和1构成的任意长度的字符串 | |
( 0 + 1 ) n (0+1)^n (0+1)n | 由0和1构成的长度为n的字符串 |
题目1: 由0和1构成的字符串中,倒数第3个字符是1的全部串。
题目2:由0和1构成的字符串中,没有连续的0的全部串。
写法一: 1 ∗ ( 01 1 ∗ ) ∗ ( 0 + ε ) 1^*(011^*)^*(0+\varepsilon) 1∗(011∗)∗(0+ε)
一个没有连续的0的字符串的结构可以看成是:
- 中间部分:类似于"011-0111-01-01-0111"
- 开头部分:可以加上若干个1: “111-0101011101”
- 结尾部分:可以加上1个0: ”01101011-0"
正则表达式 | 含义 | 示例 |
---|---|---|
01 1 ∗ 011^* 011∗ | 0 1 + 01^+ 01+,由一个0和至少一个1组成的字符串 | {01, 011, 0111, 01111, …} |
( 01 1 ∗ ) ∗ (011^*)^* (011∗)∗ | 以0开头且以1结尾的、没有连续的0的字符串 | “011-0111-01-01-0111” |
1 ∗ ( 01 1 ∗ ) ∗ 1^*(011^*)^* 1∗(011∗)∗ | (解决“以0开头”)以1结尾的、没有连续的0的字符串 | 开始位置可以有若干个1: “111-0101011101”;也可以一个1也没有: “0101011101” |
( 01 1 ∗ ) ∗ ( 0 + ε ) (011^*)^*(0+\varepsilon) (011∗)∗(0+ε) | (解决“以1结尾”)以0开头的、没有连续的0的字符串 | 可以以0结尾:01101011-0,也可以不以0结尾:01101011 |
1 ∗ ( 01 1 ∗ ) ∗ ( 0 + ε ) 1^*(011^*)^*(0+\varepsilon) 1∗(011∗)∗(0+ε) | 没有连续的0的字符串 |
写法二: ( 0 + ε ) ( 1 1 ∗ 0 ) ∗ 1 ∗ (0+\varepsilon)(11^*0)^*1^* (0+ε)(11∗0)∗1∗
一个没有连续的0的字符串的结构可以看成是:
- 中间部分:类似于"110-1110-10-110"
- 开头部分:可以加上1个0: “0-110110111010”
- 结尾部分:可以加上若干个1: “11010110-11111”
正则表达式 | 含义 | 示例 |
---|---|---|
1 1 ∗ 0 11^*0 11∗0 | 1 + 0 1^+0 1+0,由至少一个1和一个0组成的字符串 | {10, 110, 1110, 11110, …} |
( 1 1 ∗ 0 ) ∗ (11^*0)^* (11∗0)∗ | 以1开头且以0结尾的、没有连续0的字符串 | “110-1110-10-110” |
( 0 + ε ) ( 1 1 ∗ 0 ) ∗ (0+\varepsilon)(11^*0)^* (0+ε)(11∗0)∗ | 以0结尾的、没有连续0的字符串 | “0-101101110”或"101101110" |
( 1 1 ∗ 0 ) ∗ 1 ∗ (11^*0)^*1^* (11∗0)∗1∗ | 以1开头的、没有连续0的字符串 | “110110110-11111” |
( 0 + ε ) ( 1 1 ∗ 0 ) ∗ 1 ∗ (0+\varepsilon)(11^*0)^*1^* (0+ε)(11∗0)∗1∗ | 没有连续0的字符串 |
写法三: ( 1 + 01 ) ∗ ( 0 + ε ) (1+01)^*(0+\varepsilon) (1+01)∗(0+ε)
一个没有连续的0的字符串的结构可以看成是:
- 中间部分:类似于"01-1-01-1-1-01-01-01-1-1"(每一个位置可以是01或1)
- 结尾部分:可以加上一个0
正则表达式 | 含义 | 示例 |
---|---|---|
( 1 + 01 ) ∗ (1+01)^* (1+01)∗ | 以1结尾的、没有连续0的字符串 | “01-1-01-1-1-01-01-01-1-1” |
( 1 + 01 ) ∗ ( 0 + ε ) (1+01)^*(0+\varepsilon) (1+01)∗(0+ε) | 没有连续0的字符串 |
写法四: ( 0 + ε ) ( 1 + 10 ) ∗ (0+\varepsilon)(1+10)^* (0+ε)(1+10)∗
一个没有连续的0的字符串的结构可以看成是:
- 中间部分:类似于"1-10-1-1-10-10-1-10"(每一个位置可以是10或1)
- 开头部分:可以加上一个0
正则表达式 | 含义 | 示例 |
---|---|---|
( 1 + 10 ) ∗ (1+10)^* (1+10)∗ | 以1开头的、没有连续0的字符串 | “1-10-1-1-10-10-1-10” |
( 0 + ε ) ( 1 + 10 ) ∗ (0+\varepsilon)(1+10)^* (0+ε)(1+10)∗ | 没有连续0的字符串 |
题目3
题目中的正则表达式(记为R) 1 ∗ + 1 ∗ 0 ( 1 1 ∗ 0 ) ∗ 1 1 ∗ 1^*+1^*0(11^*0)^*11^* 1∗+1∗0(11∗0)∗11∗,由两部分组成:
- 1 ∗ 1^* 1∗:全1串
-
1
∗
0
(
1
1
∗
0
)
∗
1
1
∗
1^*0(11^*0)^*11^*
1∗0(11∗0)∗11∗:
用排除法来选择:
- R一定以1结尾:排除A、C
- 答案B一定以1开头,但是R可以以0开头,排除B
答案选D
题目4
字母表{a, b, c}上的任意长度串: ( a + b + c ) ∗ (a+b+c)^* (a+b+c)∗
至少包含一个a和至少一个b,有两种情况:
- 先a后b
- 先b后a