加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 正则表达式忽略新行,只匹配整个大字符串?

发布时间:2020-12-15 03:02:58 所属栏目:Java 来源:网络整理
导读:我在这里有这个字符串: CREATE UNIQUE INDEX index555 ONSOME_TABLE( SOME_PK ASC); 我想匹配多行并匹配SQL语句(所有这些都会有很多1个大字符串)……就像这样,但我只是在CREATE UNIQUE INDEX index555 ON上得到一个匹配 (CREATEs.+;) 注意:如果重要的话,
我在这里有这个字符串:
CREATE UNIQUE INDEX index555 ON
SOME_TABLE
(
    SOME_PK          ASC
);

我想匹配多行并匹配SQL语句(所有这些都会有很多1个大字符串)……就像这样,但我只是在CREATE UNIQUE INDEX index555 ON上得到一个匹配

(CREATEs.+;)

注意:如果重要的话,我试图在java中完成这个.

解决方法

编译正则表达式时需要使用DOTALL和MULTILINE标志.这是一个Java代码示例:
import java.util.regex.*;

public class test
{
    public static void main(String[] args)
    {
        String s =
        "CREATE UNIQUE INDEX index555 ONnSOME_TABLEn(n    SOME_PK          ASCn);nCREATE UNIQUE INDEX index666 ONnOTHER_TABLEn(n    OTHER_PK          ASCn);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
);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读