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