【发布时间】:2017-04-21 21:25:38
【问题描述】:
我正在使用 Gradle 解析具有“GO”(或“go”)分隔命令的 SQL 文件。 JDBC 驱动程序不喜欢“go”,所以我使用“go”作为分隔符来拆分文件。我正在使用
multiLineString.replaceAll("(?i)\ngo\n","\nGO\n").split("\nGO\n")
虽然这是不区分大小写的,但它不考虑前导或尾随空格(有时是空格,有时是制表符)。如果某人在“go”之前或之后有一个空格(或制表符),replaceAll 不会捕捉到它。
我希望使用正则表达式基本上说,“如果一行中唯一的非空白字符是 'go',那么将行更改为 '\nGO\n',以便我可以拆分它”。我认为这会起作用,但它不起作用:
multiLineString.replaceAll (/\n\s+go\s+\n/, "\nGO\n").split("\nGO\n")
multiLineString 可以包含如下文本:
drop procedure if exists dbo.procname
go
create procedure dbo.procname as
begin
....
...我想要一个带有两个字符串的数组:
[0] drop procedure if exists dbo.procname
[1] create procedure dbo.procname as\nbegin\n ...
即使“go”被前导、尾随空格或制表符包围,我也需要相同的数组。
【问题讨论】: