例题
假设有一个简单的正则表达式 [a-zA-Z_][a-zA-Z0-9_]* 用于匹配标识符。给定字符串 “abc123”, 词法分析器会识别为多少个标识符()
A 1
B 2
C 3
D 无法识别
解析
题目中的正则表达式 [a-zA-Z_][a-zA-Z0-9_]*
用于匹配标识符,我们先来逐步解析这个正则表达式:
[a-zA-Z_]
:表示标识符的第一个字符必须是字母(大小写均可)或下划线(_)。[a-zA-Z0-9_]*
:表示标识符的后续字符可以是字母、数字或下划线,且后续字符可以有零个或多个(因为*
表示零个或多个)。
这个正则表达式用于匹配像编程语言中的变量名或标识符,也就是以字母或下划线开头,后续可以跟字母、数字、下划线的字符串。
给定字符串:“abc123”
- 该字符串是以字母 a 开头,后面依次是字母 b、c,再接着是数字 1、2、3。
- 这完全符合正则表达式
[a-zA-Z_][a-zA-Z0-9_]*
的规则。
词法分析器的识别结果:
- “abc123” 整个字符串符合正则表达式,能够被识别为一个标识符。