httpSecurity
.formLogin().loginPage("/login")
.defaultSuccessUrl("/", true)
.successHandler(new LoginSuccessHandler())
.and()
.sessionManagement()
.sessionAuthenticationStrategy(sessionAuthenticationStrategy).maximumSessions(1).maxSessionsPreventsLogin(true)
.and().and()
.csrf().disable();
return httpSecurity;
通缉:
WHERE MATCH (COALESCE(f1, f2, f3)) AGAINST (?) > 0
WHERE MATCH (COALESCE(f1)) AGAINST (?) > 0
需要仅使用WHERE MATCH (f1) AGAINST (?) > 0
WHERE MATCH (f1) AGAINST (?) > 0
替换COALESCE(f1, f2, f2, ...)
,如果存在多个字符串(由f1
分隔),则为第一个字符串,或者只是字符串本身。
,
我正在捕捉#\s*match\s*\((\s*coalesce\s*\((.+)\s*\))\s*\)\s+against#/i
内的内容(1,需要替换的内容)和MATCH
内的内容(2,替代内容)。
如何用2中的第一个值替换1?
答案 0 :(得分:1)
替换应从template <class T, void(T::*)(int)> struct TemplateMagic {};
struct TestStruct { void operator>> (int) {} };
int main() {
TemplateMagic<TestStruct, (&TestStruct::operator>>) >* ptr;
}
开始,但前一部分必须匹配。之后使用\K for resetting(替换应该开始)。所以第一部分可能看起来像COALESCE
这里开始替换和模式继续:MATCH\s*\(\K
...捕获第一个捕获组。
可选部分\s*COALESCE\s*\(\s*([^,)]+)
以满足结束括号。对于(?:,[^)]*)?
部分,可以使用lookahead:AGAINST
。所以整个模式可能是:
(?=\)\s*AGAINST)
并替换为已捕获的/MATCH\s*\(\K\s*COALESCE\s*\(\s*([^,)]+)(?:,[^)]*)?\)(?=\)\s*AGAINST)/i
。 Test at regex101.com
答案 1 :(得分:1)