java - 正则表达式从给定字符串解析百分比范围
问题描述
我试图形成应该能够从任何字符串中提取百分比范围的正则表达式。例如 - 阿迪达斯30-60%的鞋类折扣,
我可以使用 - 从此字符串中提取 60% \\b\\d+(?:%|percent\\b)
,但是,这应该适用于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%
推荐阅读
- google-apps-script - 与我的团队共享 Google Apps 脚本失败通知
- python - 在不失真过程后保持图像分辨率 - 相机校准
- entity-framework - AspNet Boilerplate 并行数据库访问通过 AppService 中的实体框架
- ffmpeg - 无法在 os x 上使用 ffmpeg 从 mp4(h264) 文件中蒸汽 rtsp:连接被拒绝 无法为输出文件写入标头
- javascript - 使用枚举索引对象
- mongodb - 查找集合中存在且具有非空值或非空值的所有属性
- c# - 如何使用 C# 更改 Windows 媒体播放器的纵横比
- excel - 如何创建要在 Excel 工作表中使用的公式?
- perl - 为什么 perl qx 挂在 Mojolicious::Lite 中而不是普通程序中?
- python - 删除python中字符串中所有类型的括号(带内容)