Select * from users u
WHERE 1=1
[IF(!"<<user_email>>".eqauls(""))
AND u.user_email like '<<user_email>>'
]
[IF(!"<<user_name>>".eqauls(""))
AND u.user_name
like '<<user_name>>'
]
在上面的文字中。如何捕获[IF(...)模式之间的开始和结束位置?
我试过这个。但这对我不起作用:
Pattern p = Pattern.compile("(\\[IF\\(.*\\])",Pattern.DOTALL);
答案 0 :(得分:1)
您必须使用非贪婪的.*?
而不是贪婪的.*
量词,除此之外您不需要开头和结尾括号(...)
:
Pattern p = Pattern.compile("\\[IF\\(.*?\\]", Pattern.DOTALL);
//-----------------------------------^^^
<强>输出强>
[IF(!"<<user_email>>".eqauls(""))
AND u.user_email like '<<user_email>>'
]
和
[IF(!"<<user_name>>".eqauls(""))
AND u.user_name
like '<<user_name>>'
]