gpt4 book ai didi

java - 将过滤器转换为正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:59 25 4
gpt4 key购买 nike

我一直在寻找是否有任何java转换器库可以将简单的过滤器(例如*something*)转换为正则表达式,例如(.*)something(.*)。用例是允许最终用户在不知道整个正则表达式语法的情况下创建正则表达式。有谁知道是否已完成任何工作或有人知道如何完成它。

最佳答案

亲吻。保持简单,愚蠢。

假设您想要 * 表示零个或多个字符,而 ? 表示单个字符(与大多数操作系统上的文件名通配相同),您可以使用类似的内容(在浏览器中输入,因此未经测试,但您明白了...)

String filterToRegexExpression(String filter) {
String regexExpression = filter
.replace('?', '.')
.replace("*", "(.*)");
return "^" + regexExpression + "$"; // anchor or not at either end, as desired
}

然后只需创建一个正则表达式实例并使用此转换函数将用户提供的过滤字符串转换为正则表达式。

上面的内容不能很好地处理其他正则表达式特殊字符,但我认为您可以通过简单地转义任何非字母数字字符来做到这一点。不过,我将其作为练习留给读者。

我怀疑是否有现成的库,因为这需要定义一个普遍接受但更容易的正则表达式语法 - 而应用程序的需求(以及对用户知识的期望)往往变化很大。那时,您几乎可以要求他们输入正则表达式,有很多可用的示例。

关于java - 将过滤器转换为正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736279/

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