需要帮助使用AND运算符之类的东西组合两个正则表达式条件

时间:2013-03-05 07:06:37

标签: java regex

我的正则表达式中有两个条件。   说,

  1. (.*text.*) --->这将检查输入字符串中是否包含子字符串“text”。
  2. (^((?!query).)*$) ---->这将检查输入字符串是否包含单词“query”int it。
  3. 两者对我来说都很好。

    但我希望使用正则表达式来检查这些条件,例如AND运算符。

    我想要一个正则表达式,只有当输入字符串包含子字符串“text”并且其中不包含“query”时才应该返回true。

    我得到了正则表达式不支持AND运算符的信息。 所以,我尝试做类似以下的事情:

    NOT(NOT(expression 1)|(NOT(expression 2)))
    

    例如: - (!(.*query.*)|(^((?!text).)*$))

    但即使这对我也不起作用..

    任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

使用非消费性正则表达式。

典型的表示法是:

(?=expr)

这意味着匹配expr ,但之后在原始匹配点继续匹配。

您可以根据需要执行其中任意多项操作,这将是" "。

语法例如:

(?=match this expression)(?=match this too)(?=oh, and this)

<强>更新: -

需要添加.* incase matches(),以便正则表达式匹配整个字符串。

您的正则表达式为str.matches("(?=(.*text.*))(?=(^((?!query).)*$)).*")