【发布时间】:2020-04-22 23:55:47
【问题描述】:
我想知道是否有办法使用 Java 验证正则表达式是否与 Posix 兼容。
我正在使用 MySQL 5.7 版本和 I can't use“普通”正则表达式和 REGEXP 函数:
MySQL 使用 Henry Spencer 的正则表达式实现,旨在符合 POSIX 1003.2。 MySQL 使用扩展版本支持 SQL 语句中的正则表达式模式匹配操作。
如果我尝试使用其中一些令牌,例如:
\w\d(?:
它们被认为是无效的或被 MySQL 忽略。可能还有其他的。
我知道 Java Pattern 类可用于验证正则表达式是否有效:
Pattern.compile(regex);
如果正则表达式无效,则返回异常。但是,正如我所说,我正在尝试验证正则表达式是否仅与 Posix 兼容,因此我可以在将信息保存到数据库之前验证正则表达式输入。
【问题讨论】:
-
Java 不是一种解释性语言,而且几乎可以肯定它是完成这项工作的错误工具。您可能会发现这个Comparison of regular-expression engines 很有用。但也许不是,我不知道有任何现成的方法来验证正则表达式是否与 posix 兼容。主要是因为大多数工具都试图优雅地失败。如果您告诉我们您想要哪个 posix 标准,这也可能会有所帮助。我不知道他们上次在 Posix 中更新正则表达式是什么时候。但他们最后一次更新 Posix 是在 2017 年。
标签: java mysql regex posix mysql-5.7