【发布时间】:2012-01-06 04:28:45
【问题描述】:
我有一些正则表达式需要从 mysql 转换为 java,但它们在传递给 String.matches() 时不起作用。
如何将 mysql 正则表达式转换为 java 正则表达式?
是否有任何 API(内置或第三方)可以执行此操作?
【问题讨论】:
-
男人!您必须发布您的尝试(准确简洁的代码 sn-ps)。
我有一些正则表达式需要从 mysql 转换为 java,但它们在传递给 String.matches() 时不起作用。
如何将 mysql 正则表达式转换为 java 正则表达式?
是否有任何 API(内置或第三方)可以执行此操作?
【问题讨论】:
这真的很简单。区别如下:
String.matches() 需要匹配整个字符串regexp只需要匹配部分字符串要将 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)
【讨论】: