如何使用正则表达式匹配整个String

时间:2014-12-07 17:03:54

标签: regex scala

我有以下代码:

def main(args: Array[String]) {
      val it = ("\\b" + "'as" + "\\b").r.findAllMatchIn("'as you are a's".toLowerCase());
      val lst = it.map(_.start).toList
      print(lst)
}

我预计答案为List(0)(因为它与'as匹配且索引应为0),但它给了我List()

此外,

def main(args: Array[String]) {
      val it = ("\\b" + "as" + "\\b").r.findAllMatchIn("'as you are a's".toLowerCase());
      val lst = it.map(_.start).toList
      print(lst)
  }

这给了我答案List(1),但我希望答案是List(),因为我想匹配整个事情(需要完全匹配'as),这就是我使用{的原因{1}}这里

但这很有效:

\b

它返回def main(args: Array[String]) { val it = ("\\b" + "a's" + "\\b").r.findAllMatchIn("'as you are a's".toLowerCase()); val lst = it.map(_.start).toList print(lst) } 这是我想要的(因为它匹配List(12)而索引应该是a's)。

当我把12放在单词的前面时,我不明白为什么它不起作用。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

问题是\b如果后面的第一个字符不是字母或其他单词字符则不匹配。因此,当它跟随'时,它将不匹配。请参阅:http://www.regular-expressions.info/wordboundaries.html

编辑:

val it = ("(?:\\b|')" + "as" + "\\b").r.findAllMatchIn("'as you are a's".toLowerCase())