试构造下列语言的正则表达式。 (1)C语言的/*...*/注释 (2)由偶数个a和奇数个b构成的所有a、b字符串 (3)所有由a和 b组成且包含了串abb的串。 (4)所有由a和 b组成且不含子串abb 的串。 (5)所有由a和b组成且不含子序列abb 的串。
时间: 2023-05-22 14:03:14 浏览: 100
(1) 正则表达式:/\/\*([^\*]|\*+[^\*\/])*\*+\//
(2) 正则表达式:(aa|bb|(ab|ba)(aa|bb)*(ab|ba))*b
(3) 正则表达式:(a|b)*abb(a|b)*
(4) 正则表达式:(a|b)*(ba|bb|\(|\))*(a|b)*
(5) 正则表达式:((a|b)(?!abb))*
注:以上正则表达式仅供参考,可能还需进一步完善和优化。
相关问题
正则表达式 *.*和 /*.* 有什么区别
正则表达式是一种用来描述字符串匹配规则的语法。在正则表达式中,"*"表示匹配任意数量的字符(包括0个字符),"."表示匹配除换行符外的任意一个字符。因此,"*.*"表示匹配任意长度的任意字符序列(包括空字符串),而"/*.*"则表示以斜杠开头,后跟任意长度的任意字符序列(包括空字符串)。换句话说,"/*.*"更加具体,只匹配以斜杠开头的字符串,而"*.*"则更加宽泛,可以匹配任意字符串。
在shell中,正则表达式/*和/.*的区别
在shell中,正则表达式`/*`匹配的是任意数量的斜杠字符,而`/.*`匹配的是一个斜杠字符后面跟着任意数量的任意字符。具体解释如下:
- `/*`:表示匹配任意数量的斜杠字符,包括0个斜杠字符。这个表达式中的`*`表示匹配前面的字符0次或多次。因此,`/*`可以匹配空字符串、单个斜杠字符、多个斜杠字符等。
- `/.`:表示匹配一个斜杠字符后面跟着任意数量的任意字符。这个表达式中的`.`表示匹配任意一个字符,`*`表示匹配前面的字符0次或多次。因此,`/.*`可以匹配以斜杠字符开头的任意字符串,包括斜杠字符后面跟着任意数量的任意字符的字符串。
举个例子,假设当前目录下有以下文件和目录:
```
/
/a
/a/b
/c
```
- `/*`匹配的是根目录`/`。
- `/.*`匹配的是根目录`/`和`/a`、`/a/b`、`/c`三个目录。