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

java正则表达式从带有日期的较大字符串中排除特定权重,java,regex,extract,Java,Regex,Extract,我有一些绳子 “今天我们收到了2014年12月31日g的货物。这些货物的重量为31.12g(2014年3月23日)。 2014年12月31日g——这不是错误。一些带有日期标签的文本有g字母(无空格) 我只需要从字符串中提取权重值(不含日期值), 但是我的正则表达式: [0-9]+\[0-9]+g EXTACT日期:( 我的结果(两组): 12.2014g 31.12g您可以添加,以确保在您感兴趣的部分之前,没有您不想要的东西,而在您的情况下,这些东西似乎是您想要的 比如说1到10个数字,后面加

我有一些绳子

“今天我们收到了2014年12月31日g的货物。这些货物的重量为31.12g(2014年3月23日)。

2014年12月31日g——这不是错误。一些带有日期标签的文本有g字母(无空格)

我只需要从字符串中提取权重值(不含日期值), 但是我的正则表达式:

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

EXTACT日期:(

我的结果(两组):

12.2014g

31.12g您可以添加,以确保在您感兴趣的部分之前,没有您不想要的东西,而在您的情况下,这些东西似乎是您想要的

  • 比如说1到10个数字,后面加点,以防万一

    31.12.2014g
    ^^^ 
    
    31.12.2014g
        ^^^^^^^ 
    
  • 还要确保我们将匹配整个值,而不仅仅是它的一部分

    31.12.2014g
    ^^^ 
    
    31.12.2014g
        ^^^^^^^ 
    
    如果
    2.2014g
    满足先前的反向查找条件,我们需要确保匹配零件前面不应有任何数字

所以试试类似的东西

(?<!\\d{1,10}\\.)(?<!\\d)\\d+\\.\\d+g
输出:
31.12g

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

  • 比如说1到10个数字,后面加点,以防万一

    31.12.2014g
    ^^^ 
    
    31.12.2014g
        ^^^^^^^ 
    
  • 还要确保我们将匹配整个值,而不仅仅是它的一部分

    31.12.2014g
    ^^^ 
    
    31.12.2014g
        ^^^^^^^ 
    
    如果
    2.2014g
    满足先前的反向查找条件,我们需要确保匹配零件前面不应有任何数字

所以试试类似的东西

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

输出:
31.12g

您可以搜索空白:

\s[0-9]+\[0-9]+g/->“31.12g”

…始终假定正好有两个十进制位置:

[^\.][0-9]+\[0-9]{2}g/->“31.12g”
(但是,如果日期拼写为DD.MM.yyyg,则此操作将失败)

…或使用日期:


[0-9].[0-9]\.[0-9].[0-9].[0-9].[0-9].[0-9][0-9]g?+(\b[0-9]+\.[0-9]+g)/->“31.12.2014g我们收到货物。这些重量是31.12g”,“31.12g”

您可以搜索空白:

\s[0-9]+\[0-9]+g/->“31.12g”

…始终假定正好有两个十进制位置:

[^\.][0-9]+\[0-9]{2}g/->“31.12g”
(但是,如果日期拼写为DD.MM.yyyg,则此操作将失败)

…或使用日期:


[0-9].[0-9].[0-9].[0-9].[0-9].[0-9].[0-9][0-9]g?+(\b[0-9]+\.[0-9]+\.[0-9]+/->“31.12.2014g我们收到货物。这些重量是31.12g”,“31.12g”

是您数据中的日期格式总是
dd mm.yyyyy
(有时带有
g
)重量
xxxxx.xxg
123.00g
?或者日期像
2014.12.31g
?数据中的日期格式是否总是
dd.mm.yyyyy
(有时带有
g
)重量
xxxxx.xxg
123.00g
?或者日期像
2014.12.31g
也是可能的?谢谢!谢谢大家!谢谢大家!谢谢大家!