Scala正则表达式和括号

时间:2018-11-10 17:35:48

标签: regex scala

我有以下字符串:

tagged.big) AND tagged.medium

我需要从该字符串中提取所有内容,这些内容从有标记开始。并以一个或多个空格或)

结尾

这是我当前的正则表达式模式:

tagged\.[\),\S]+

从示例字符串中我期望:

tagged.big
tagged.medium

但现在它返回:

tagged.big)
tagged.medium

我在做什么错以及如何解决?

2 个答案:

答案 0 :(得分:2)

在正则表达式中,您使用tagged\.[\),\S]+,其中包含一个character class,其中),逗号和\S与空白字符不匹配。 \S还与逗号和)匹配,因此可以缩短为\S+。但这太匹配了。

要匹配您的值,您可以使用word character \w或在字符类中添加允许匹配的内容:

tagged\.\w+

Regex demo

这将匹配

  • tagged\.匹配标记。
  • \w+匹配1个以上的单词字符

Regex demo

答案 1 :(得分:1)

最终模式:tagged.[^\W\s]+(您可以在网站上查看更多说明)

因此,它遵循:

  • 被标记了。 :匹配以标记开头的任何字符串。
  • [^]:此字符与集合中显示的的单个字符匹配。
  • [^ \ W \ s]:匹配一个非单词或空格的单个字符
  • + :量词贪婪,匹配集合的一倍或无限倍。