正则表达式匹配C数据类型

时间:2013-07-19 08:11:43

标签: regex

我有像

这样的字符串
int
int[]
char[]
int[][]
char**
int*
etc

我想要一个正则表达式来匹配它。我能想到的最好的是

[a-zA-Z]+(\[\])?(\*)?

这适用于

int
int[]
char[]
int[]
int*
char*

但是也验证int[]*并且不验证int[][]

intchar等并不重要,仅仅是示例。

3 个答案:

答案 0 :(得分:4)

尝试:

[a-zA-Z]+((\[\])+|(\*)+)?

|运算符表示“OR”。然后+运算符表示“之前的一个或多个”。因此,正则表达式表示“一些字母,然后可选地(一个或多个[] s)OR(一个或多个* s)。”

Here is a JSFiddle.

答案 1 :(得分:-1)

?替换为+?表示0或1次,+表示至少一次。这可以捕获多个[]*。然后应该使用替代方法(\[\])+|(\*)+)

答案 2 :(得分:-1)

这个检查所有发布的字符串(int int [] char [] int [] [] char ** int *)

[a-zA-Z]+((\[\])*(\*)*)

使用http://gskinner.com/RegExr/尝试:)