0

我正在制作一个代码,它需要一个文件并检查它是否是有效的 Java 代码,必须使用正则表达式来完成。

我遍历每一行并检查它是否以 ; 或 { 或 }。但是,我似乎无法将其限制为仅出现 1 次。即两者

int i=0;

int i=0 ;;;;;;;

会通过..我现在使用的正则表达式是

.+;{1}\\s*$

尝试了许多其他选项,似乎没有工作。任何帮助都会很棒!谢谢

4

3 回答 3

1

您的问题是 也.将匹配分号,因此您的表达式将匹配除最后一个分号之外的所有内容作为.+.

为避免这种情况,您可以使用 匹配分号以外的任何字符[^;]。IE

[^;]+;\\s*$

但是,您应该知道这int i=0 ;;;;;;;;;是完全有效的 Java 代码。

于 2012-04-25T16:06:32.367 回答
0

如果要确保整行中只有一个分号,请使用:

^[^;]+;{1}\\s*$

然而,这不是对有效 java 源的正确检查。

于 2012-04-25T16:01:16.377 回答
0

正则表达式的这一部分:.+将匹配任何字符,包括除最后一个之外的所有字符;

您需要;从您的正则表达式的第一部分中排除,以便您可以匹配“除 a 之外的任何内容;后跟恰好一个;” (一旦你开始工作,你可以扩展你的角色类来捕捉 { 和 } 如果你愿意)

高温高压

于 2012-04-25T16:02:24.183 回答