我正在尝试编写正则表达式,它将拆分所有以hashtag开头的单词。
例如,在以下案文中,应:
val regex = "???".r
val text = "#shouldMatch1 #shouldMatch2 notMatch nope#shouldMatch3 nooope()#shouldMatch4"
regex.split(text).toList shouldBe List("#shouldMatch1", "#shouldMatch2", "#shouldMatch3", "#shouldMatch4")
字符串
我可以得到的关闭是val regex: Regex = "[^#\\w+]".r
,但它分裂了一点:
List("#shouldMatch1", "#shouldMatch2", "notMatch", "nope#shouldMatch3", "nooope", "#shouldMatch4")
型
因此,在某些情况下,它会找到不以标签开头的单词。你有什么想法或指导我应该如何写正确的表达吗?
代码是用Scala编写的,但在Java中应该是类似的。
1条答案
按热度按时间8wtpewkr1#
您需要将
findAllIn
与#\w+
这样的正则表达式一起使用:字符串
参见Scala demo。
主题标签匹配模式可以不同,有很多变化。这里是其中的一些:
#\w+
-如果主题标签只能包含单词字符#[\w-]+
-如果主题标签只能包含单词和连字符#\S+
-如果主题标签在#
之后包含任意数量的一个或多个非空格字符#\S+\b
-如果主题标签在#
之后包含一个或多个非空格字符,但您希望它在最后一个非单词字符序列(如逗号等)之前停止(?<!\S)#\S+
-如果hashtags在#
之后、#
之前包含任意数量的一个或多个非空格字符,则只能有空格或字符串开头。