我有一些正则表达式,我需要从mysql转换为java,但它们在传递给String.matches()时不起作用。
如何将mysql正则表达式转换为java正则表达式?
是否有任何API(内置或第三方)可以执行此操作?
答案 0 :(得分:6)
这很简单。这是区别:
String.matches()
需要匹配整个字符串regexp
只需匹配字符串 part 要将mysql正则表达式转换为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
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)