正则表达式,需要在最后识别时停止

时间:2013-01-22 22:38:16

标签: regex

我创建了这个正则表达式

((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,

它被认为是真实的。有没有办法让符号不被最后一次认可或任何其他方式解决?感谢

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.]*)?)))*[;]

这匹配最终期望分号的整个定义行。

如果要匹配代码中的每个定义,可以在正则表达式定义的主体中使用命名组。我不知道你正在使用哪种编程语言,所以我对命名组不能提供更多帮助。