[英]Regex to parse percentage range from given string
我试图形成正则表达式,它应该能够从任何字符串中提取百分比范围。 例如-阿迪达斯鞋类30-60% 的折扣,
我可以使用 - \\\\b\\\\d+(?:%|percent\\\\b)
从此字符串中提取 60% ,但是,这应该适用于56%和30-60% 。
任何帮助都将得到认可。
您可以使用
\b(?:\d+[—–-])?\d+(?:%|percent\b)
有了分数支持,它可能看起来像
\b(?:\d+(?:\.\d+)?[—–-])?\d+(?:\.\d+)?(?:%|percent\b)
请参阅正则表达式演示。 详情:
\\b
- 单词边界(?:\\d+(?:\\.\\d+)?[—–-])?
- 一个或多个数字的可选序列,后跟一个可选的.
一个或多个数字,然后是一个破折号\\d+(?:\\.\\d+)?
- 一个或多个数字后跟可选的.
和一位或多位数字(?:%|percent\\b)
- %
或percent
后跟单词边界。查看Java 演示:
import java.util.regex.*;
class Test
{
public static void main (String[] args) throws java.lang.Exception
{
String s = "both 56% as well as 30-60%.";
Pattern pattern = Pattern.compile("\\b(?:\\d+[—–-])?\\d+(?:%|percent\\b)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group());
}
}
}
输出:
56%
30-60%
public static void main(String[] args) {
String line = "Adidas 30-60% Off";
String pattern = "\\b[\\d|-]+(?:%|percent\\b)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
} else {
System.out.println("NO MATCH");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.