gpt4 book ai didi

java - 使用正则表达式提取SQL数据

转载 作者:太空宇宙 更新时间:2023-11-04 13:58:47 25 4
gpt4 key购买 nike

我以这种方式得到了不正确的数据。我需要使用正则表达式提取点符号之前和点符号之后的数据。我正在使用,但无法获得准确的数据。

String rightHeading=null;
String leftHeading=null;

String formulaData="ifnull(\"Content Status\".\"Week Of Quarter\",0)";

Matcher matcher = Pattern.compile("(\"?([^()]*?)\"?)\\.(\"?([@#$%><{}\\w ]*)\"?)").matcher(formulaData);
while (matcher.find())
{
String Column_Data=matcher.group(0);
String[] pieces = Column_Data.split("\\.");
rightHeading=pieces[0].replace("\"", "");
leftHeading=pieces[1].replace("\"", "");

System.out.println(rightHeading+ ": "+leftHeading);
}//while

我得到的输出是:

   ifnullContent Status.Week Of Quarter,0)

预期输出:

    Content Status.Week Of Quarter

最佳答案

下面是我针对您的问题的解决方案,以及它产生的输出。

    String formulaData="(100*(FILTER(\"Fact - Bookings\".\"$ Total Gross Bookings\" USING (\"Booking Date\".\"Year\" =  VALUEOF(\"CUR_YEAR\")))  - FILTER(Fact - Bookings.$ Total Gross BookingsData USING \"Booking Date\".\"Year\" =  VALUEOF(\"PREV_YEAR\") AND  \"Booking Date\".Sortable Number <= VALUEOF(\"PRV_YEAR_TD\") ) ) / FILTER(Fact - Bookings.$TotalGrossBookingsUsage \" USING \"Booking Date\".\"Year\" =  VALUEOF(\"PREV_YEAR\") AND \"Booking Date\".\"Sortable Number\" <= VALUEOF(\"PRV_YEAR_TD\") ) )";

String p1 = "(\"(\\w*\\s*-*)*?\"\\.\".*?\")|((?:\\()((\\w*\\s*-*)*?\\.\\$\\w+))|(\"(\\w*\\s*-*)*?\"\\.(\\w+\\s+)+)";

Pattern p = Pattern.compile(p1);
Matcher m = p.matcher(formulaData);

while(m.find())
{
System.out.println(m.group(0).replaceAll("\"|\\(|\\)", ""));
}

输出:

Fact - Bookings.$ Total Gross Bookings
Booking Date.Year
Fact - Bookings.$ Total Gross BookingsData
Booking Date.Year
Booking Date.Sortable Number
Fact - Bookings.$TotalGrossBookingsUsage
Booking Date.Year
Booking Date.Sortable Number

如您所见,我实际上并没有使用极其复杂的正则表达式来解决您的问题。这是因为您的输入过于多样化,无法有效地使用此工具。

事实上,您的 table.field 对有时会在其中包含 $" 符号,这使得数据非常不一致。正则表达式很难处理这种复杂程度,所以我认为我的解决方案(在本示例中)是可行的。

但是,将来如果您对数据输入有任何控制权,请尝试对其进行清理并使其尽可能一致。

编辑由于这对您不起作用,因此我更改了代码片段以使用正则表达式。

关于java - 使用正则表达式提取SQL数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29533888/

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