2013-09-27 4 views
0

일반 표현식에 새로운 점이있어서 gwt 클라이언트 측에서 RegExp를 사용하려고합니다. 나는 간단한 * 매칭을하고 싶다. (사용자가 006 *을 입력하면 006과 일치하고 싶다고 ...). 임 쓰는 데 문제가있다. 내가 가지고있는 것은 :간단한 정규 표현식 일치

input = (006*) 
input = input.replaceAll("\\*", "(" + "\\" + "\\" + "S\\*" + ")"); 
RegExp regExp = RegExp.compile(input). 

BKLFD006 * 같은 문자열에도 true를 반환합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까 ?

답변

2

^을 생성중인 정규식의 시작 부분에 놓습니다.

^ 문자는 원본 문자열의 시작 부분에서만 일치한다는 것을 의미합니다.

1

여기 두 가지를 섞어서 생각합니다. 바꾸기와 일치하기.

일치는 특정 패턴과 일치하는 입력 문자열의 일부를 추출하려는 경우에 사용됩니다.

^[0-9]+(?=\*) 

하고 여기에 있습니다 : 귀하의 경우는 그게 당신이 원하는 것, 그리고 다음과 같은 정규 표현식을 사용할 수있는 스타 뒤에 아무것도가 선행되지 않은 하나 이상의 숫자를 얻기 위해 보인다 Java 스니 j :

String subjectString = "006*"; 
String ResultString = null; 
Pattern regex = Pattern.compile("^[0-9]+(?=\\*)"); 
Matcher regexMatcher = regex.matcher(subjectString); 
if (regexMatcher.find()) { 
    ResultString = regexMatcher.group(); 
} 

다른 f 식으로 입력. 자열에서 재 _ 생하는 패턴을 다른 것으로 바꾸려면 대체가 사용됩니다. 괄호로 둘러싸인 같은 자리 별 다음에 모든 숫자를 바꾸려면

예를 들어, 당신은 이런 식으로 작업을 수행 할 수 있습니다

String input = "006*"; 
String result = input.replaceAll("^([0-9]+)\\*", "($1)"); 

공지 사항 $1의 사용은 숫자를 참조하는 정규식 패턴에서 캡처 그룹 ([0-9]+)을 사용하여 캡처 한 경우.