gpt4 book ai didi

java - 如何在Java中使用正则表达式

转载 作者:行者123 更新时间:2023-11-30 07:54:23 24 4
gpt4 key购买 nike

我需要像这样分隔一个字符串:

C-USD10.00_FRIES AND BURGUER_USD15.00

在这样的小组中

segment = first_char;
subtotal_currency = after-next_3_chars;
subtotal = digits_up_to_;
description = text_up_to_;
total_curency = next_3_char;
total = last_digits;

我想表示它的一种方法是这样的:

 (?P<segment>[A-Z])-(?P<scurr>[A-Z]{3})(?P<subtotal>\d+(?:,\d{1,2})?)_(?<desc>^\s*[a-zA-Z,\s]+\s*$)_(?P<curr>[A-Z]{3})(?P<total>\d+(?:,\d{1,2})?)

预期结果是:

segment = "C";
subtotal_currency = "USD";
subtotal = 10.00;
description = "FRIES AND BURGUER";
total_curency = "USD";
total = 15.00;

如何利用java中的正则表达式来进行字符串的划分?

顺便说一句,我必须为多种类型的字符串完成这项工作...所以我想使用正则表达式会对我有很大帮助。

最佳答案

正则表达式位于 java.util.regex 包中。

看来您的想法是正确的。基于documentation对于 Pattern 和 Matcher 类,您唯一需要从模式中删除的是 ? 之间的 Ps。和 < 代表命名组,如下所示:

(?<segment>[A-Z])-(?<scurr>[A-Z]{3})(?<subtotal>\d+(?:,\d{1,2})?)_(?<desc>^\s*[a-zA-Z,\s]+\s*$)_(?<curr>[A-Z]{3})(?<total>\d+(?:,\d{1,2})?)

创建您的 Pattern 对象,然后在字符串上调用 .matcher() 来获取匹配器。然后您可以使用 .group(String) 方法从 Matcher 中提取信息。

您可以轻松地使系统变得通用,但对您的域很有帮助。

关于java - 如何在Java中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878886/

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