gpt4 book ai didi

regex - 暴露的JetBrains(DSL Api):使用.regexp()时出现问题的情况

转载 作者:行者123 更新时间:2023-12-02 12:53:03 25 4
gpt4 key购买 nike

我正在使用Javalin和Exposed ORM构建小型API。
我正在尝试在有条件的情况下使用正则表达式,但会引发异常,因为由于我的代码而执行的SQL查询似乎不完整(缺少模式)。

fun getUsersByFilter(filter: String): List<User> {
val regex = StringBuilder("/")
.append(filter.toLowerCase())
.append("/i")
.toString()


/**
* The .regexp(someString) method take a string as argument (a pattern)
*/
val users = transaction {
User.find{ Users.pseudo.regexp(regex) }.toList()
}

return users
}
  Position : 141. Statement(s): SELECT users.id, users.pseudo, users.email, users."password", users.admin, users.created_at, users.updated_at FROM users WHERE users.pseudo REGEXP ?
org.jetbrains.exposed.exceptions.ExposedSQLException: org.postgresql.util.PSQLException: ERREUR: erreur de syntaxe sur ou près de « REGEXP »
Position : 141
SQL: [SELECT users.id, users.pseudo, users.email, users."password", users.admin, users.created_at, users.updated_at FROM users WHERE users.pseudo REGEXP ?]

有人能帮助我吗?

最佳答案

好的我明白了。即使使用StringBuilder,regex参数也已正确传递给查询(异常消息中的问号正好指向该参数...)。该错误来自PostgreSQL,因为PostgreSQL中根本不存在“REGEXP”功能...

我终于使用此代码:

    fun getUsersByFilter(filter: String): List<User> {
val regex = "%${filter.toLowerCase()}%"

val users = transaction {
User.find{ Users.pseudo.lowerCase().like(regex) }.toList()
}

return users
}

关于regex - 暴露的JetBrains(DSL Api):使用.regexp()时出现问题的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56396308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com