gpt4 book ai didi

java正则表达式从带有日期的较大字符串中排除特定权重

转载 作者:行者123 更新时间:2023-12-01 18:33:35 25 4
gpt4 key购买 nike

我有一些字符串

“今天2014年12月31日收到 cargo 。重量为31.12克(2014年3月23日)”

31.12.2014g - 这不是错误。一些带有日期标签的文本有 g 字母(没有空格)

我需要从字符串中仅提取权重值(没有日期值),但我的正则表达式:

[0-9]+\.[0-9]+g

也有确切日期:(

我的结果(两组):

12.2014g

31.12g <- i am need only this!!!

最佳答案

您可以添加negative look behind确保在您感兴趣的部分之前没有您不想要的内容,在您的情况下似乎是

  • 让我们说出 1 到 10 之间的数字,后面带点,就像 case

    31.12.2014g
    ^^^
  • 还要确保我们匹配整个值,而不是像情况那样只匹配其中的一部分

    31.12.2014g
    ^^^^^^^

    其中2.2014g满足先前否定查找的条件,我们需要确保匹配的部分前面不应该有任何数字

所以尝试一下类似的事情

(?<!\\d{1,10}\\.)(?<!\\d)\\d+\\.\\d+g

BTW \d(在 Java 中写为 "\\d")代表 [0-9]。如果您愿意,可以将其改回来。

演示:

String data = "Today 31.12.2014g we receive goods. These weight is 31.12g (23.03.2014)";
Pattern p = Pattern.compile("(?<!\\d{1,10}\\.)(?<!\\d)\\d+\\.\\d+g");
Matcher m = p.matcher(data);
while(m.find())
System.out.println(m.group());

输出:31.12g

关于java正则表达式从带有日期的较大字符串中排除特定权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23036138/

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