JAVA从字符串中获取度量单位和度量值
我有一个字符串:JAVA从字符串中获取度量单位和度量值,java,string,extract,Java,String,Extract,我有一个字符串: String = "2 ltr. btl., select varieties when you buy 6 $1.25 ea.-50¢ MIX OR MATCH"; 是否可以从给定字符串中提取度量单位?(2升) 注:测量单位和测量值可能出现在字符串中的任何位置 编辑: 其中一个关键字应该出现 oz. oz lbs. lbs lb. lb kg. kg k g. g pk. pk ea. ea ml. ml pck. pck ct. ct qt. qt liter lt
String = "2 ltr. btl., select varieties when you buy 6 $1.25 ea.-50¢ MIX OR MATCH";
是否可以从给定字符串中提取度量单位?(2升)
注:测量单位和测量值可能出现在字符串中的任何位置
编辑:
其中一个关键字应该出现
oz. oz lbs. lbs lb. lb kg. kg k g. g pk. pk ea. ea ml. ml pck. pck ct. ct qt. qt liter ltr ltr. fl oz fl oz.
我想获得计量单位及其相应的计量单位。用于提取金额的正则表达式(带可选小数部分),其计量单位为:
(?x)\d+(?:\.\d+)?\s+
(?:
(?:fl )?oz(?:\.|\b)|lbs?(?:\.|\b)|kg(?:\.|\b)|kg?\b|g(?:\.|\b)
| pc?k(?:\.|\b)|ea(?:\.|\b)|ml(?:\.|\b)|[cq]t(?:\.|\b)
| liter\b|ltr(?:\.|\b)
)
演示:
对应的Java代码:
String input = "2 ltr. btl., select varieties when you buy 6 $1.25 ea.-50¢ MIX OR MATCH";
Pattern pattern = Pattern.compile(
"(?x)\\d+(?:\\.\\d+)?\\s+"
+ " (?:"
+ " (?:fl )?oz(?:\\.|\\b)|lbs?(?:\\.|\\b)|kg(?:\\.|\\b)|kg?\\b|g(?:\\.|\\b)"
+ " | pc?k(?:\\.|\\b)|ea(?:\\.|\\b)|ml(?:\\.|\\b)|[cq]t(?:\\.|\\b)"
+ " | liter\\b|ltr(?:\\.|\\b)"
+ " )"
);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println(matcher.group());
}
那么规则是什么?或者当您是一个有效的度量值时,
是吗?对不起,我没有发布规则。当这些关键词出现时:盎司磅磅公斤。千克千克。g pk。pk ea。每毫升。毫升pck。pck-ct。ct qt。qt升ltr ltr.fl oz fl oz。我想得到相应测量值的测量单位。因此,一些数字输入正则表达式后跟空格,后跟任何关键字?试试。更好:。当前表达式也将匹配2个女孩中的2 g
是的,我刚刚注意到您的(?:\.\124;\ b)
更改,我认为这是至关重要的。你完全正确!我自己也错过了这一点,介意我问一下,如果在字符串开头找到它,是否可以跳过?如果您只需要模式的第一次出现,只需将while(matcher.find()){…}
更改为if(matcher.find()){…}