我试图从输入字符串中提取某些模式。这些模式是+, - , *,/, (,),
log
,integer
和float numbers
。正则表达式:在Scala中匹配和标记化
这里的例子为需要的行为:
//input string
var str = "log6*(12+5)/2-34.2"
//wanted result
var rightResp = Array("log","6","*","(","12","+","5",")","/","2","-","34.2")
我已经尝试做了一段时间,但我不得不承认,正则表达式是不是我的专长。代码的下一块显示了我坚持:
import scala.util.matching.Regex
var str = "log6*(12+5)/2-34.2"
val pattern = new Regex("(\\+|-|log|\\*|\\/|[0-9]*\.?[0-9]*)")
pattern.findAllIn(str).toArray
效果不好的原因有对括号“(
”不匹配“)
”,也有数字,这两个integer(6,12,5,2)
和float(34.2)
都搞砸了。谢谢你的帮助!
试试['[+()*/- ] |登录| [0-9] * \\。 ?[0-9] +'](https://regex101.com/r/bT7uA7/1)。 –
@stribizhev非常感谢!如果您将其作为答案发布,我会很乐意接受并接受您的答案。 – grubjesic