1

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

  1. (.*text.*) ---> 它将检查输入字符串中是否包含子字符串“text”。
  2. (^((?!query).)*$) ----> 其中会检查输入的字符串是否不包含单词“query” int 呢。

两者对我来说都很好。

但是我想要一个正则表达式来使用运算符之类的东西来检查这两个条件AND

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

我得到了正则表达式不支持AND运算符的信息。因此,我尝试执行以下操作:

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

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

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

任何人都请帮助我解决这个问题。

4

1 回答 1

2

使用非消耗正则表达式。

典型的符号是:

(?=expr)

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

你可以随心所欲地做这些,这将是一个“”。

语法例如:

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

更新:-

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

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

于 2013-03-05T07:15:55.017 回答