正则表达式 - 检查子字符串是否不是模式的一部分

时间:2016-05-03 18:53:27

标签: java regex string

我想检查给定的字符串,如果单词 TEST 出现在字符串中,那么它不在模式([])中。 对于以下示例字符串,正则表达式应返回 true

  • TEST
  • 这是我的[[TEST
  • 这是我的测试])2号
  • ([bla])TEST([bla])

对于以下示例字符串,应返回 false

  • 这是我的[[TEST])oops
  • 这是我的[[bla TEST bla])
  • 这是我的[[TEST TEST])
  • 没有tes *字符串的字符串

感谢

2 个答案:

答案 0 :(得分:3)

/\[.*TEST.*\]/g

你问的反面(see Regex101 demo),只做一个'!'比赛前

答案 1 :(得分:3)

你可以使用这个前瞻性正则表达式:

^(?!.*\(\[(?:(?!\(\[|\]\)).)*TEST(?:(?!\(\[|\]\)).)*\]\))(?=.*TEST).*
    如果(?!..)出现在该行的任何位置,则
  • ([..TEST..])为否定匹配为负面预测。
  • (?=.*TEST)是确定该行包含TEST
  • 的正面预测

RegEx Demo