java - 获取与字符串中的模式匹配的字符串数组

标签 java regex pattern-matching

我有一个很长的字符串,比如说

I like this #computer and I want to buy it from #XXXMall.

我知道正则表达式模式是

Pattern tagMatcher = Pattern.compile("[#]+[A-Za-z0-9-_]+\\b");

现在我想获取数组中的所有主题标签。我如何使用这个表达式从字符串中获取所有哈希标签的数组,例如

ArrayList hashtags = getArray(pattern, str)

最佳答案

你可以这样写吗?

private static List<String> getArray(Pattern tagMatcher, String str) {
    Matcher m = tagMatcher.matcher(str);
    List<String> l = new ArrayList<String>();
    while(m.find()) {
        String s = m.group(); //will give you "#computer"
        s = s.substring(1); // will give you just "computer"
        l.add(s);
    }
    return l;
}

您还可以使用 \\w- 而不是 A-Za-z0-9-_ 来制作正则表达式 [#]+[\\w ]+\\b

关于java - 获取与字符串中的模式匹配的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21180921/

相关文章:

scala - 如何在case语句中引用val?

elasticsearch - 我想对Elasticsearch中的URL使用通配符查询。我正在使用Elasticsearch 2.3.0

java - 如何防止 java 1.4 项目使用 1.5/1.6 特定 API?

java - 从单独的线程调用 requestLayout

java - 如何在 Spring MVC 中设置 quartz 触发器的优先级

java - 为 Java 创建精确的重力

javascript - 将方括号内容替换为html

python - 用于排除目录、捕获以逗号分隔的文件名、排除 "(number)"和扩展名的正则表达式

linux - 为什么不能在变量赋值中使用通配符模式?

javascript - 使用替换删除大写字母以外的所有内容