gpt4 book ai didi

java - Gradle:正则表达式查找并替换特定文本周围的空格

转载 作者:行者123 更新时间:2023-11-30 06:46:52 26 4
gpt4 key购买 nike

我正在使用 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”被前导、尾随空格或制表符包围,我也需要相同的数组。

最佳答案

您可以直接拆分

multiLineString.split("(?i)\n[\\p{Zs}\t]*go[\\p{Zs}\t]*\n")

详细信息:

  • (?i) - 内联 Pattern.CASE_INSENSITIVE 修饰符版本
  • \n - 换行符
  • [\\p{Zs}\t]* - 零个或多个水平空白
  • go - 一个词go
  • [\\p{Zs}\t]* - 零个或多个水平空白
  • \n - 换行符

此外,如果您希望水平空白只是常规空格或制表符,则可以将 [\\p{Zs}\t]* 替换为 [\t]*.

关于java - Gradle:正则表达式查找并替换特定文本周围的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43552262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com