2013-10-09 1 views
1

팀, 나는 할 일이있다. 즉, 데이터의 blcvk에서 98%을 확인하려고합니다. 정규 표현식을 쓰려고했지만 계속되는 오류가 있습니다.Java String RegularExpressions

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

그러나 false를 반환합니다.

답변은 진심으로 감사드립니다.

답변

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!"); 
} 
0

시도 :

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

또는 (\d = 자리) :

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

일치하는 패턴은 왜해야이며 이는 98% 후 이전에 오는 문자/일치해야합니다 추가 할 내용 : .*

설명 :
다른 제안 된 패턴 일치자를 사용할 수 있습니다. 문자열에서 98%을 추출하려는 경우 특히 효과적입니다. 그러나 일치하는 항목이 있는지 찾으려면 - .matches()이되어야합니다. 사용하기 더 쉽다.

+0

완료, 모든 답변 주셔서 감사합니다. – user1835935

+0

@ user1835935에 오신 것을 환영합니다 Stackoverflow! 대답이 도움이된다면 그들 중 하나를 들고 질문의 왼쪽 상단에있는 V (체크 표시)를 클릭하여 "동의"해야합니다. 게시 한 다른 질문과 동일하게 수행해야합니다. 도움이되는 답변이 두 개 이상인 경우 (하나만 받아 들일 수 있음) "위쪽 화살표"를 클릭하여 다른 유용한 답변을 upvote 할 수 있습니다. – alfasin

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

str.matches("[0-9][0-9]%") 실제로 시작과 끝 부분에 고정되어이 정규식 ^[0-9][0-9]%$을 적용한다. 다른 사람들은 이미 이것에 대한 해결책을 설명했습니다.