Java解析器和正则表达式

Java解析器和正则表达式,java,regex,parsing,Java,Regex,Parsing,我正在编写一个解析器,目前正在匹配不同的令牌,在匹配方面遇到了一些问题。 我有一个测试文件: while a != b if a > b a := a - b if a <= b b := b - a elihw 当我运行这个方法时,它匹配运算符前面的字符串,但不匹配运算符后面的字符串。父母在那里只是为了标记他们匹配的人。 例如,该行 a := a - b 将产生以下产出: (a) := (a) - b 我不明白为什么b不匹配 还有,如果有人能帮我用一个

我正在编写一个解析器,目前正在匹配不同的令牌,在匹配方面遇到了一些问题。 我有一个测试文件:

while a != b
  if a > b
    a := a - b
  if a <= b
    b := b - a
elihw
当我运行这个方法时,它匹配运算符前面的字符串,但不匹配运算符后面的字符串。父母在那里只是为了标记他们匹配的人。 例如,该行

a := a - b
将产生以下产出:

(a) := (a) - b
我不明白为什么b不匹配

还有,如果有人能帮我用一个与操作符匹配的正则表达式,那就太好了。我尝试过很多类似的方法:

[\+\-\*\\]
[\\+\\-\\*\\\]
[+][-][*][/]

但似乎无法正确操作。

扫描仪可能包含不可打印(换行)字符作为标记的一部分

试试这个:

private static Pattern tokenPattern = Pattern.compile("[ \r\n\t]+");
对于操作员,请尝试以下操作:

[<>+-/*=:]+
[+-/*=:]+

你做错了。您需要编写一个适当的扫描器,而不仅仅是一组正则表达式。看看JFlex。这将破坏本练习的全部目的。添加的扫描仪声明完成了!非常感谢。
[<>+-/*=:]+