首页 > 解决方案 > Scala 正则表达式用于 . 和空格

问题描述

我有以下字符串:

val str = "tagged.big AND tagged.medium"

我需要实现正则表达式,它将找到tagged.直到第一个空格或行尾的所有保证。在当前str我希望提取 2 个字符串:

tagged.big
tagged.medium

这是我目前的尝试:

val pattern = "tagged.*\\s".r

但它返回:

Some(tagged.big AND )

您能否为这种情况显示正确的正则表达式?

标签: regexscala

解决方案


该模式tagged\.\S+应该在这里工作。这将匹配tagged.后跟一个或多个空白字符。这是一个演示:

演示

这就是我编写模式的方式。您当前模式的问题在于它.*是贪婪的,并且会在遇到空白字符之前尽可能多地消耗。此外,在最终匹配的情况下,tagged.medium在它之后没有出现空白字符。所以,我们可以尝试使用这个:

tagged.*?(?=\s|$)

也有效


推荐阅读