我有一些我需要从mysql转换为java的正则表达式,但它们在传递给String.matches()时不起作用.
如何将mysql正则表达式转换为java正则表达式?
是否有任何API(内置或第三方)来执行此操作?
解决方法:
这很简单.这是区别:
> Java的String.matches()需要匹配整个String
> mysql的regexp只需要匹配部分字符串
要将mysql正则表达式转换为java版,基本上将“.*”添加到正则表达式的每一端,或者将其从“部分”匹配转换为完全匹配.
以下是一些示例:
Java的
"xyz".matches("y"); // false - only matches part of the input
"xyz".matches(".*y.*"); // true
"xyz".matches("[xyz]"); // false - only matches one char, but String is 3 chars
"xyz".matches("[xyz]+"); // true
MySQL的
select 'xyz' regexp 'y'; -- 1 (ie true)
select 'xyz' regexp '.*y.*'; -- 1 (ie true)
select 'xyz' regexp '[xyz]'; -- 1 (ie true)
select 'xyz' regexp '[xyz]+'; -- 1 (ie true)
标签:java,mysql,regex
来源: https://codeday.me/bug/20190518/1126427.html