【发布时间】:2015-12-17 07:50:57
【问题描述】:
Mobile Internet 50MB Balance 30.1MB till Jan 12,2016 11:59:59 PM.
我有这个互联网余额扣除的响应,我想代表 MB 解析这个字符串。我使用了这个正则表达式;
\\MB? 但它同时包含“M”和“MB”。我也使用了这个链接
enter link description here
但没能得到。不知道我在哪里卡住了。任何建议将不胜感激。
【问题讨论】:
Mobile Internet 50MB Balance 30.1MB till Jan 12,2016 11:59:59 PM.
我有这个互联网余额扣除的响应,我想代表 MB 解析这个字符串。我使用了这个正则表达式;
\\MB? 但它同时包含“M”和“MB”。我也使用了这个链接
enter link description here
但没能得到。不知道我在哪里卡住了。任何建议将不胜感激。
【问题讨论】:
这里你需要使用正向前瞻。
Pattern p = Pattern.compile("\\d+(?:\\.\\d+)?(?=MB?)");
如果你不想让 B 成为可选的,那么试试这个,
Pattern p = Pattern.compile("\\d+(?:\\.\\d+)?(?=MB)");
单击下面的链接查看正在运行的演示。
\\d+(?:\\.\\d+)? 将匹配所有数字(整数和浮点数,因为我将小数部分设为可选)
(?=MB) 断言匹配后必须跟MB。所以这将匹配所有在MB 之前存在的数字。
【讨论】: