我创建了这个正则表达式
((char) ([a-zA-Z][a-zA-Z0-9_]*)[,]?([=]?[']?[a-zA-Z0-9.]*?['])?([,]|;))|((int|float) ([a-zA-Z][a-zA-Z0-9_]*)[,]?([=]?[a-zA-Z0-9.]*)?([,]|;))
它应该识别类型的变量:
int a, int a=1, char b, char b='1';
问题是当我输入时
int a=1,
它被认为是真实的。有没有办法让符号不被最后一次认可或任何其他方式解决?感谢
答案 0 :(得分:0)
我测试了这个:
(([,]?\s*)(((char)\s([a-zA-Z][a-zA-Z0-9_]*)([=]?[']?[a-zA-Z0-9.]*?[']?))|((int|float) ([a-zA-Z][a-zA-Z0-9_]*)([=]?[a-zA-Z0-9.]*)?)))*[;]
这匹配最终期望分号的整个定义行。
如果要匹配代码中的每个定义,可以在正则表达式定义的主体中使用命名组。我不知道你正在使用哪种编程语言,所以我对命名组不能提供更多帮助。