我需要一个正则表达式来在eclipse中执行搜索,以匹配所有以$ {开头并以}结尾但在两者之间不应具有pageContext的字符串。
例如

$ {requestScope.user}

$ {sessionScope.user}

应该匹配

但是$ {pageContext.request}不应该

经过所有的努力,我做了这个正则表达式(\ $ {),它匹配以$ {开头的字符串,但是有些不符合我的要求。任何帮助将不胜感激。

最佳答案

您可以使用否定前瞻来排除特定匹配项:

\$\{(?!pageContext\.).*?\}
    ^^^^^^^^^^^^^^^^


(?!pageContext\.)后跟{的情况下,pageContext.前瞻将失败。另外,您可以使用[^{}]*代替.*?

请参见regex demo

图案细节:


\$-文字$
\{-文字{
(?!pageContext\.)-如果pageContext.立即跟随{,则匹配失败
.*?-换行符以外的任何0+字符(或[^{}]*-{}以外的零个或多个字符)
\}-文字}


注意:

如果需要避免将任何${...}子字符串与其中的任何pageContext.匹配,请使用

\$\{(?![^{}]*pageContext\.)[^{}]*\}
    ^^^^^^^^^


在这里,前瞻内部的[^{}]*将在除pageContext.{之外的任何0+字符之后查找}

10-05 18:19