从简单的数学方程(Java,String)中提取变量

时间:2013-09-29 21:30:11

标签: java regex string

我将处理一堆具有以下格式的字符串:

"2*salary"
"salary+2"
"2*salary/3"

我的目标是拔出“薪水”。然而,我不想消除非字符,因为我可能有类似“2 * id3”的东西,字符和数字的混合作为变量名称(注意:它永远不会是所有数字)。我目前使用:

Pattern pattern = Pattern.compile("[\\w_]+");

然而,对于像“2 *薪水”这样的事情,这会导致找到“2”和“薪水”。

2 个答案:

答案 0 :(得分:3)

你可能正在寻找这个:

Pattern.compile("[a-zA-Z]\\w+");

...换句话说,将开始的字符序列与字母匹配。那将匹配'薪水',但不会匹配'2'(和'2薪水')。

如果您确实需要匹配2salary,请使用此项:

Pattern.compile("[0-9]*[A-Za-z]\\w+");

(我已将[\w_]替换为\w,它实际上包含下划线。

答案 1 :(得分:0)

那是因为2 * salary匹配你的“word”字符定义\ w的两倍,即[a-zA-Z0-9_],第一个是2,而且匹配是工资

在你的情况下你需要像“[a-zA-Z] [\ w] *”

这样的东西