Java 正则表达式来匹配可能的单词

Java 正则表达式来匹配可能的单词,java,regex,Java,Regex,我一整天都在努力让它工作,但我不太擅长正则表达式 在我的例子中,格式正确的字符串如下所示 String s = "10 LET D = 4"; 我正在尝试创建一个正则表达式,以确保它的格式正确 现在我只是在做 boolean b = s.matches("[0-9]+ GOTO|LET [a-zA-Z] +|= [0-9]+"); 但我知道我的GOTO | LET有点不对劲,因为这是我编造的。它也不能用括号括起来,所以我现在有点迷路了。我想用正则表达式做的事情可能吗?如果没有,还有其他建议吗

我一整天都在努力让它工作,但我不太擅长正则表达式

在我的例子中,格式正确的字符串如下所示

String s = "10 LET D = 4";
我正在尝试创建一个正则表达式,以确保它的格式正确

现在我只是在做

boolean b = s.matches("[0-9]+ GOTO|LET [a-zA-Z] +|= [0-9]+");

但我知道我的GOTO | LET有点不对劲,因为这是我编造的。它也不能用括号括起来,所以我现在有点迷路了。我想用正则表达式做的事情可能吗?如果没有,还有其他建议吗?

假设您允许语法
GOTO
LET
,在这些术语周围加括号应该可以解决问题

此外,我在
+
=
周围添加了分组(括号)。这是一种避免冲突的快速方法,因为
+
是正则表达式语法的一部分

boolean b = s.matches("[0-9]+ (GOTO|LET) [a-zA-Z] [+=] [0-9]+");

注意:我同意其他用户的看法,如果这是更大语法的一部分,那么解析器可能更合适。

谈到编程语言,您可能需要解析器,而不是正则表达式;然而,这实际上取决于语言规则的简单程度。您可以使用测试正则表达式(您可以通过谷歌搜索找到一堆正则表达式测试人员)


提示:关于goto和let,您需要的是括号。您可能还希望接受任意数量的空格,只要至少有一个空格。您可以使用“\s+”

+1实现这一点。我同意解析器可能是最好的。特别是如果这是更大语法的一部分,我很好奇
5 GOTO D=3
合法吗?我对这种语言有一些假设,我只是好奇它们是否正确。