无法捕获正则表达式中的组

时间:2013-10-08 12:45:38

标签: regex scala

我正在尝试获取value属性的值,该值可以是任何整数,包括小于零的整数

val source = """...some noise .... <input type="hidden" name="myId" id="myId" value="1234"/> ...some noise ....""" // or value="-5678"/>

val regex = """<input type="hidden" name="myId" id="myId" value="([-?\\d+])"/>""".r
regex findAllIn source 

我得到scala.util.matching.Regex.MatchIterator = empty iterator

3 个答案:

答案 0 :(得分:1)

你的正则表达式不符合你的想法。它与-?\d+匹配。您已将所有内容放入character class。你应该使用:

(-?\d++)

当您使用Scala tripe引用时,您不需要双重转义\

答案 1 :(得分:0)

更改此部分:

([-?\\d+])

为:

(-?\\d+)

答案 2 :(得分:0)

除了@ M42所说的(删除方括号),你想在数字标记之前删除一个反斜杠 - 记住你在一个“三引号”字符串里 - 你不需要逃脱反斜线:

(-?\d+)