我需要一个正则表达式来在eclipse中执行搜索,以匹配所有以$ {开头并以}结尾但在两者之间不应具有pageContext的字符串。
例如
$ {requestScope.user}
$ {sessionScope.user}
应该匹配
但是$ {pageContext.request}不应该
经过所有的努力,我做了这个正则表达式(\ $ {),它匹配以$ {开头的字符串,但是有些不符合我的要求。任何帮助将不胜感激。
最佳答案
您可以使用否定前瞻来排除特定匹配项:
\$\{(?!pageContext\.).*?\}
^^^^^^^^^^^^^^^^
在
(?!pageContext\.)
后跟{
的情况下,pageContext.
前瞻将失败。另外,您可以使用[^{}]*
代替.*?
。请参见regex demo
图案细节:
\$
-文字$
\{
-文字{
(?!pageContext\.)
-如果pageContext.
立即跟随{
,则匹配失败.*?
-换行符以外的任何0+字符(或[^{}]*
-{
和}
以外的零个或多个字符)\}
-文字}
。注意:
如果需要避免将任何
${...}
子字符串与其中的任何pageContext.
匹配,请使用\$\{(?![^{}]*pageContext\.)[^{}]*\}
^^^^^^^^^
在这里,前瞻内部的
[^{}]*
将在除pageContext.
和{
之外的任何0+字符之后查找}
。