Java String RegularExpressions

时间:2013-10-09 05:25:55

标签: java regex

队 我有一个任务。即,我想检查一个数据的98%。 我试着写一些正则表达式,但它给出了连续的错误。

String str="OAM-2 OMFUL abmasc01 and prdrot01 98% users NB in host nus918pe locked.";
if(str.matches("[0-9][0-9]%"))

但它返回false。

真的很感激回应。

4 个答案:

答案 0 :(得分:1)

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

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 :(得分:0)

尝试:

str.matches(".*[0-9][0-9]%.*")

或(\d =数字):

str.matches(".*\\d\\d%.*")

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

的原因

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

答案 2 :(得分:0)

你可以试试这个正则表达式\d{1,2}(\.\d{0,2})?%这将匹配98%或百分比与98.56%一样的小数值。

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());
}

答案 3 :(得分:0)

str.matches("[0-9][0-9]%")实际应用此正则表达式^[0-9][0-9]%$,它在开始和结束时锚定。其他人已经为此描述了解决方案。