我正在尝试使用正则表达式来解析表单的字符串:
“A = 10:30:00:B = 2:C = 3”
产生
a=10:30:00
b=2
c=3
我最接近的是 (\ w +)=(\ S +?)(=:?| $) 但是,这是一个::30:00:
a=10
b=2
c=3
代码在scala中:
scala> val s = "a=10:20:00:b=2:c=3"
s: java.lang.String = a=10:20:00:b=2:c=3
scala> val R = """(\w+)=(\S+?)(?=:|$)""".r
R: scala.util.matching.Regex = (\w+)=(\S+?)(?=:|$)
scala> R findAllIn s foreach println
a=10
b=2
c=3
基于修改正则表达式 要处理Regular expression to match comma separated list of key=value where value can contain commas:
val s = "foo=bar:baz:r=abc:a=10:20:00:b=2:c=3:s=xx:yy:z=100"
val R = """([^=]+)=([^=]+)(?::|$)""".r
R findAllMatchIn s foreach { x => println(x.subgroups) }
//> List(foo, bar:baz)
//| List(r, abc)
//| List(a, 10:20:00)
//| List(b, 2)
//| List(c, 3)
//| List(s, xx:yy)
//| List(z, 100)
答案 0 :(得分:0)
scala> val R = """(\w+)=(\d+(?::\d+)*)""".r
R: scala.util.matching.Regex = (\w+)=(\d+(?::\d+)*)
scala> for(R(key, value) <- R.findAllIn(str)) println(key + "=" + value)
a=10:30:00
b=2
c=3
或者基于你引用的正则表达式:
scala> val R = """([^:=]+)=([^=]+)(?=:|$)""".r
R: scala.util.matching.Regex = (\w+)=([^=]+)(?=:|$)
scala> for(R(key, value) <- R.findAllIn(str)) println(key + "=" + value)
a=10:30:00
b=2
c=3