Java 如何解析字符串以从字符串中获取#标记数组?

Java 如何解析字符串以从字符串中获取#标记数组?,java,arrays,string,parsing,Java,Arrays,String,Parsing,所以我有这样的字符串 “#tag1#tag2#tag3 not#tag1 not#tag2#tag4”(tag2和tag4之间的空格表示可以有许多空格)。从这个字符串中,我只想解析一个tag1、tag2等等。它们类似于我们在LinkedIn或任何其他社交媒体上看到的标签。使用正则表达式或Java中的任何其他函数是否有简单的方法来实现这一点。或者我应该用一种艰难的方式(即使用循环和条件)来完成 标记格式应为“#”(表示标记开始)和空格“”(表示标记结束)。中间可以是字符或数字,但开头只能是字符 例

所以我有这样的字符串
“#tag1#tag2#tag3 not#tag1 not#tag2#tag4”
(tag2和tag4之间的空格表示可以有许多空格)。从这个字符串中,我只想解析一个tag1、tag2等等。它们类似于我们在LinkedIn或任何其他社交媒体上看到的标签。使用正则表达式或Java中的任何其他函数是否有简单的方法来实现这一点。或者我应该用一种艰难的方式(即使用循环和条件)来完成

标记格式应为“#”(表示标记开始)和空格“”(表示标记结束)。中间可以是字符或数字,但开头只能是字符

例如, 输入:
“#tag1#tag2#tag3不#tag1不#tag2#12tag#tag4”

输出:
[“tag1”、“tag2”、“tag3”、“tag4”]
按正则表达式拆分:“\w+”

编辑:这是正确的正则表达式,但split不是正确的方法

与javadev建议的解决方案相同,但改用:

String input = "#tag1 #tag2    #tag3 not_tag1 not_tag2 #12tag  #tag4";
Matcher matcher = Pattern.compile("#\\w+").matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group(0));
}
按预期输出#。

可能类似于:

public static void main(String[] args ) {
    String input = "#tag1 #tag2    #tag3 not_tag1 not_tag2 #12tag  #tag4";
    Pattern pattern = Pattern.compile("#([A-z][A-z0-9]*) *");

    Matcher matcher = pattern.matcher(input);
    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }
}
为我工作:)

输出: tag1 tag2 tag3
tag4

如果你没有测试,没有足够的把握,只是猜测,请不要将其作为答案发布。它是有效的,但#12tag也是被选中的。我对regex了解不多,所以很抱歉。啊,在我发布我的答案后,要求改变了。