我有以下代码:
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
放在单词的前面时,我不明白为什么它不起作用。我怎么能这样做?
答案 0 :(得分:1)
问题是\b
如果后面的第一个字符不是字母或其他单词字符则不匹配。因此,当它跟随'
时,它将不匹配。请参阅:http://www.regular-expressions.info/wordboundaries.html
编辑:
val it = ("(?:\\b|')" + "as" + "\\b").r.findAllMatchIn("'as you are a's".toLowerCase())