一直试图让这一切工作,但我不太擅长正则表达式。
我的案例中格式正确的字符串看起来像
String s = "10 LET D = 4";
我正在尝试创建一个正则表达式,以确保它的格式正确。
现在我正在做
boolean b = s.matches("[0-9]+ GOTO|LET [a-zA-Z] +|= [0-9]+");
但是我知道我的GOTO | LET有什么问题,因为我只是做了那件事。它没有用括号围绕它,所以我在这一点上有点迷失。我正在尝试用正则表达式做什么?如果没有,还有其他建议吗?
答案 0 :(得分:4)
假设您允许使用语法GOTO
或LET
,则围绕这些术语抛出括号应该可以解决问题。
此外,我在+
和=
附近添加了分组(括号)。这是避免冲突的一种快速方法,因为+
是正则表达式语法的一部分。
boolean b = s.matches("[0-9]+ (GOTO|LET) [a-zA-Z] [+=] [0-9]+");
注意:我同意其他用户的意见,如果这是更大语法的一部分,那么解析器可能更适合。
答案 1 :(得分:2)
说到编程语言,你可能想要一个解析器,而不是一个正则表达式;然而,这实际上取决于语言规则的简单程度。您可以使用regexpal测试正则表达式(您可以通过Google搜索找到一堆正则表达式测试器。)
提示:关于goto和let的所需内容是括号。您可能还希望接受任意数量的空白,只要至少有一个空格即可。你可以用“\ s +”来做到这一点。