扩展 Java 正则表达式以匹配包含特定字符串的单词

Expanding Java Regex to match word containing certain string

所以我有这个正则表达式:

String tagsRegex = "^(" + String.join("|", tags) + ")$";

这将匹配字符串 tags 中的所有内容。例如,如果 tagsjohn,它将只匹配 john 而不是 johnnythejohnman

我想要的是匹配*tag*,换句话说我想匹配每个包含存储在变量tag.

中的字符串的单词

有什么提示吗?

尝试将正则表达式用作:

String tagsRegex = "\w*(" + String.join("|", tags) + ")\w*";

这是假设您的数组 tags 没有任何带有特殊正则表达式符号的元素,例如 [()*+]

如果数组 tags 是:{"foo", "bar", "baz"} 那么构建的正则表达式将是:

\w*(foo|bar|baz)\w*