0

我创建了这个正则表达式

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

它被认为是真实的。有没有办法让 , 符号不被最后一次识别或任何其他解决方法接受?谢谢

4

1 回答 1

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

这匹配整个定义行,最后需要一个分号。

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

于 2013-01-22T22:55:23.513 回答