繁体   English   中英

正则表达式解析给定字符串的百分比范围

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM