簡體   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