gpt4 book ai didi

java - 什么正则表达式将在收据上列出最后的价格?

转载 作者:行者123 更新时间:2023-12-02 02:19:28 25 4
gpt4 key购买 nike

我有以下表达式:

(?!\d+\s+TOTAL\s+)\$+\d+\.?\d+\s+

它根据以下文本生成结果“$23.00$0.03$23.80”:

SPEEDWAY 3007906          
Wallace NC 28466
TRAM: 1086244
9/17/2017 2:12 pm
Pump 08
Regular Unleaded
8,716 @ $2,639/6131
GAS TOTAL $23.00
TAX $0.03
TOTAL $23.80
Uisa

在这种情况下,什么正则表达式只会提取 $23.80 ?如果我添加正向前瞻,则表达式为 "(?!\d+\s+TOTAL\s+)\$+\d+\.?\d+\s+(?=.*\$\d+\. ?\d+)”,结果是“$23.00$0.03”而不是“$23.80”。请帮忙。提前致谢。

最佳答案

试试这个:

(?<=^TOTAL)\s*(\$\s*\d+\.?\d*)\s*$

确保您使用MULTILINE匹配。

这将匹配值周围的所有空格,因此您可能需要删除这些空格来获取值

示例:

String in = "SPEEDWAY 3007906\n" +          
"Wallace NC 28466 \n" +
"TRAM: 1086244 \n" +
"9/17/2017 2:12 pm \n" +
"Pump 08 \n" +
"Regular Unleaded \n" +
"8,716 @ $2,639/6131 \n" +
"GAS TOTAL $23.00\n" +
"TAX $0.03 \n" +
"TOTAL $23.80\n" +
"Uisa ";

Pattern p = Pattern.compile("(?<=^TOTAL)\\s*(\\$\\s*\\d+\\.?\\d*)\\s*$", MULTILINE);
Matcher m = p.matcher(in);

if(m.find()) {
System.out.println(m.group(1));
}

这应该只打印匹配的值

关于java - 什么正则表达式将在收据上列出最后的价格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48725109/

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