Lex是一个生成词法分析器的计算机程序,由Mike Lesk和Eric Schmidt编写。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现lex的源代码。
问题:我们必须验证密码。
如果密码包含以下内容,则该密码是正确的:
- Atleast 1大写字符
- Atleast 1小写字符
- 至少1位数字
- Atleast 1特殊字符
- 最少8个字符
例子:
Input: Geeksforgeeks
Output: INVALID
Input: Geeks@12
Output: VALID
注:这句话可以由小写字符,大写字符和数字。
以下是计算字数的实现。
%{
#include
#include
int a = 0, b=0, c=0, d=0, l=0;
%}
%%
[a-z] {a++;l++;}
[A-Z] {b++;l++;}
[0-9] {c++;l++;}
[$&+, :;=?@#|'<>.-^*()%!] {d++;l++;}
. ;
%%
int yywrap(void){}
int main()
{
// The function that starts the analysis
yylex();
if(a>0 && b>0 && c>0 && d>0 && l>=8)
printf("VALID\n");
else
printf("INVALID\n");
return 0;
}
输出: