我有两个测试字符串:
1+":"+2:xyz
1+"a:fb"+2:xyz
我正在尝试替换引号之间的:
我试过了:
(".*):(.*")
替换为:
$1Q$2
但我最终得到了这个:
1+"Q"+2:xyz
1+"Q"+2:xyz
但我想最终得到这个:
1+"Q"+2:xyz
1+"aQfb"+2:xyz
是的,请有人帮助我。必须在Javascript中工作。
编辑:
我已将测试工具切换为正常工作(即在浏览器中直接在javascript中进行)。
这现在有效:
var str = '1+"a:fb"+2:xyz';
var res = str.replace(/(".*):(.*")/g, "$1Q$2");
但是,如果我有两个:在两组引号中,如下所示:
1+"a:fb"+2+":"
我现在得到这个结果:
1+"a:fb"+2+"Q":xyz
答案 0 :(得分:4)
实际上,您正在尝试替换由三部分组成的模式:
repo.findBy("email", email).map { userOpt =>
val maybeUser1 = userOpt.filter { user => BCrypt.checkpw(password, user.password) }
// or like this:
// longer form, if more than one options or whatever
val maybeUser2 = for {
user <- userOpt
if(BCrypt.checkpw(password, user.password))
} yield user
}
开头且不包含"
或"
:
:
也不包含"
,以:
因此表达式如下:
"
替换("[^:"]*):([^:"]*")
会导致
$1Q$2
您的工作不正常的原因在于greedy matching。