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。这将破坏本练习的全部目的。添加的扫描仪声明完成了!非常感谢。
[<>+-/*=:]+