【问题标题】:Expanding Java Regex to match word containing certain string扩展 Java 正则表达式以匹配包含特定字符串的单词
【发布时间】:2016-01-03 15:24:19
【问题描述】:

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

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

这将完全匹配字符串tags 的所有内容。例如,如果 tagsjohn,它将匹配 JUST john 但不匹配 johnnythejohnman

我想要匹配*tag*,换句话说,我想要匹配包含存储在变量tag 中的字符串的每个单词。

有什么提示吗?

【问题讨论】:

  • 你可以试着把你的标签做成\w*john\w*这样的形式。
  • 你没有得到什么,@KickButtowski?

标签: java regex string substring


【解决方案1】:

尝试使用您的正则表达式:

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

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

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

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

【讨论】:

  • 您能解释一下您的正则表达式,以便我学习并投票给您吗?
  • 其实是对自己的正则表达式的一个小修改。我的更改是在组的任一侧添加\w*,而不是您正在使用的^$。任一侧的\w* 允许tags 数组中单词的任一侧有0 个或多个单词字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 2017-10-02
  • 2017-05-28
相关资源
最近更新 更多