我在这里有这个字符串:
CREATE UNIQUE INDEX index555 ON SOME_TABLE ( SOME_PK ASC );
我想匹配多行并匹配sql语句(所有这些都会有很多1个大字符串)……就像这样,但我只是在CREATE UNIQUE INDEX index555 ON上得到一个匹配
(CREATE\s.+;)
注意:如果重要的话,我试图在java中完成这个.
解决方法
编译正则表达式时需要使用DOTALL和MULTILINE标志.这是一个Java代码示例:
import java.util.regex.*; public class test { public static void main(String[] args) { String s = "CREATE UNIQUE INDEX index555 ON\nSOME_TABLE\n(\n SOME_PK ASC\n);\nCREATE UNIQUE INDEX index666 ON\nOTHER_TABLE\n(\n OTHER_PK ASC\n);\n"; Pattern p = Pattern.compile("([^;]*?('.*?')?)*?;\\s*",Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE); Matcher m = p.matcher(s); while (m.find()) { System.out.println ("--- Statement ---"); System.out.println (m.group ()); } } }
输出将是:
--- Statement --- CREATE UNIQUE INDEX index555 ON SOME_TABLE ( SOME_PK ASC ); --- Statement --- CREATE UNIQUE INDEX index666 ON OTHER_TABLE ( OTHER_PK ASC );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。