首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java String RegularExpressions

Java String RegularExpressions
EN

Stack Overflow用户
提问于 2013-10-09 13:25:55
回答 4查看 62关注 0票数 1

各位,我有个任务。也就是说,我想在一个blcvk数据中检查98%。我试图写一些正则表达式,但它给出了连续的错误。

代码语言:javascript
复制
String str="OAM-2 OMFUL abmasc01 and prdrot01 98% users NB in host nus918pe locked.";
if(str.matches("[0-9][0-9]%"))

但它返回的是false。

我真的很欣赏你的回应。

EN

回答 4

Stack Overflow用户

发布于 2013-10-09 13:28:10

使用pattern/matcher/find方法。matches将正则表达式应用于整个字符串。

代码语言:javascript
复制
Pattern pattern = Pattern.compile("[0-9]{2}%");
String test = "OAM-2 OMFUL abmasc01 and prdrot01 98% users NB in host nus918pe locked.";
Matcher matcher = pattern.matcher(test);
if(matcher.find()) {
    System.out.println("Matched!");
}
票数 1
EN

Stack Overflow用户

发布于 2013-10-09 13:28:21

尝试:

代码语言:javascript
复制
str.matches(".*[0-9][0-9]%.*")

or (\d =数字):

代码语言:javascript
复制
str.matches(".*\\d\\d%.*")

匹配的模式还应该与98%之前/之后的字符相匹配,这就是为什么应该添加.*

评论:

你可以像其他人建议的那样使用模式匹配器,如果你想从字符串中提取98%,它特别有效-但如果你只是想找出是否有匹配-我发现.matches()更容易使用。

票数 0
EN

Stack Overflow用户

发布于 2013-10-09 13:33:29

您可以尝试这个正则表达式\d{1,2}(\.\d{0,2})?%,它也将匹配98%或带有十进制值的百分比,如98.56%

代码语言:javascript
复制
Pattern pattern = Pattern.compile("\\d{1,2}(\\.\\d{0,2})?%");
String yourString= "OAM-2 OMFUL abmasc01 and prdrot01 98% users NB in host nus918pe locked.";
Matcher matcher = pattern.matcher(yourString);
while(matcher.find()) {
    System.out.println(matcher.group());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19263788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档