Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式限制为一个分号_Java_Regex - Fatal编程技术网

Java 正则表达式限制为一个分号

Java 正则表达式限制为一个分号,java,regex,Java,Regex,我正在制作一个代码,它接受一个文件并检查它是否是有效的Java代码,必须使用正则表达式来完成 我检查每一行,看它是否以;或{或}。 然而,我似乎无法将其限制为仅出现一次。 即 两者 及 会过去的。。 我现在使用的正则表达式是 .+;{1}\\s*$ 尝试了许多其他的选择,非似乎有效。 任何帮助都会很好! 谢谢如果要确保整行中只有一个分号,请使用: ^[^;]+;{1}\\s*$ 然而,这并不是对有效java源代码的正确检查 这部分regexp:+将匹配任何字符,包括除最后一个以外的所有字符

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

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

会过去的。。 我现在使用的正则表达式是

.+;{1}\\s*$
尝试了许多其他的选择,非似乎有效。 任何帮助都会很好!
谢谢

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

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

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

这部分regexp:
+
将匹配任何字符,包括除最后一个以外的所有字符

您需要排除
从regexp的第一部分开始,这样您就可以匹配“除a之外的任何内容;后面紧跟着一个;”(一旦您开始工作,您可以扩展您的角色类来捕获{和},如果您愿意的话)


HTH

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

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

[^;]+;\\s*$

但是,您应该知道
inti=0
是完全有效的Java代码。

阅读贪婪正则表达式匹配(或贪婪量词)。什么是不正确的检查?Java文件可以包含不以{}或结尾的行;它们可以在行后面加上更多的分号,以此类推。这比你用几个字符的regexp写下来要复杂得多。哦,这个。是的,我知道。但在练习中,我们不需要检查这些东西。我们需要编写一个简化的Java编译器,它使用正则表达式来验证代码。S-Java没有这些问题。
^[^;]+;{1}\\s*$
[^;]+;\\s*$