如何编写Java正则表达式来标记字符串?

时间:2019-03-31 20:13:42

标签: java regex tokenize

我能够标记字符串的一部分,但不能标记整个字符串。我在编写正则表达式以标记整个字符串方面需要帮助。我要标记的字符串是123 + 56 * num1。

下面的正则表达式是我已经尝试过的。我可以标记123 + 56 *,但不能标记123 + 56 * num1。如果表达式也可以匹配变量名,那就太好了。

String variableRegex = "[a-zA-Z_$0-9][a-zA-Z_$0-9]*"; //for variable names
String operatorRegex = "\\+|-|\\/|\\*|\\*|="; // for operators
String multiply = "\\*";
String numberRegex = "\\d*";
String definingVariables = String.format("(%s)(%s)(%s|%s)(%s)", variableRegex, operatorRegex, variableRegex, numberRegex, multiply);
String justVariable = String.format("%s", variableRegex);
String allRegex = String.format("%s|(%s)", definingVariables, justVariable);

结果应为:

123

+

56

*

num 1

当前结果是: 123 + 56 * num1

1 个答案:

答案 0 :(得分:0)

这似乎可行:

"[0-9a-z]+|\+|\*"

请参见https://regex101.com/r/rzhoyx/1/