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

时间:2011-07-06 01:39:25

标签: java regex

一直试图让这一切工作,但我不太擅长正则表达式。

我的案例中格式正确的字符串看起来像

String s = "10 LET D = 4";

我正在尝试创建一个正则表达式,以确保它的格式正确。

现在我正在做

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

但是我知道我的GOTO | LET有什么问题,因为我只是做了那件事。它没有用括号围绕它,所以我在这一点上有点迷失。我正在尝试用正则表达式做什么?如果没有,还有其他建议吗?

2 个答案:

答案 0 :(得分:4)

假设您允许使用语法GOTOLET,则围绕这些术语抛出括号应该可以解决问题。

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

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

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

答案 1 :(得分:2)

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

提示:关于goto和let的所需内容是括号。您可能还希望接受任意数量的空白,只要至少有一个空格即可。你可以用“\ s +”来做到这一点。