【问题标题】:Converter for SQL Regular expression to Java regular expressionSQL 正则表达式到 Java 正则表达式的转换器
【发布时间】:2019-08-02 18:14:31
【问题描述】:

我正在构建一个需要将 SQL 正则表达式转换为 Java 正则表达式的 API。此正则表达式专门用于 MySQL 中的 REGEXP 关键字。

我的问题是:是否有现成的库或 git-hub 存储库来实现这一目标?

SQL 查询:

SELECT company 
FROM business 
WHERE title REGEXP '^[ABCD]';

在 MySQL 中输入正则表达式:^[ABCD] 在 Java 中输出正则表达式:[A-D]*

我在互联网上搜索了很多,但找不到这样做的。任何建议我如何解决这个问题。

【问题讨论】:

    标签: java regex scala scala-collections


    【解决方案1】:

    为什么你认为^[ABCD]应该翻译成[A-D]*?根据https://dev.mysql.com/doc/refman/8.0/en/regexp.html#regexp-syntax^与Java中的含义相同,[ABCD]是一个字符类,可以用Java相同的方式编写。 [A-D] 在 Java 和 MySQL 正则表达式中也是合法的,并且具有相同的含义。所以^[ABCD] 的翻译将是……^[ABCD]

    没有人可能会编写一个库来翻译这两种方言。如需更多通用工具,请参阅Tool to convert regex between different language syntaxes?Free alternative to RegexBuddy

    或者您也可以自己编写:该页面中唯一不受 Java 支持的语法似乎是 [= =],这需要您知道要使用哪种排序规则。因此,您可以编写一个方法来查找[= =] 部分(使用正则表达式),并根据您所需的排序规则将它们替换为完整的等价类。这确实 not 意味着每个模式都会在每个字符串上给出相同的结果;请参阅https://dev.mysql.com/doc/refman/8.0/en/regexp.html 上的“正则表达式兼容性注意事项”和http://userguide.icu-project.org/strings/regexp 上的“Java 正则表达式的差异”,了解您需要处理的问题。

    【讨论】:

      猜你喜欢
      • 2015-03-21
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      相关资源
      最近更新 更多