2013-06-13 4 views
1

나는 한 그룹의 문자 (단 하나) [A-Z] (대문자 만 가능)을 제거해야하는 특수한 조건이 있으며 그 뒤에는 3 자리 숫자가 올 수 있습니다 최대 예를 들어캐릭터의 그룹을 찾을 수있는 정규식과 최대 3 자리 숫자

- I/P에서 : BA1040,E123,ZA650,B12 출력 같아야 E123 및 B12는 오직 I 등 A1040 및 A650 같은 다른 거부해야

이것은 또한 문자/숫자가 있으면 거부해야 그 다음에 문자와 그 다음 숫자가옵니다. 예 : ZA650은 작동하지 않아야합니다. 그것이 A650 또는 Z650 인 경우에만 작동했을 것입니다.

다양한 시도를했는데, [A-Z]\d+ 같은 간단한 표현도 잘못 출력됩니다.

누군가 나를 도와 줄 수 있습니까?

+1

정확히 무엇을하고 있습니까? 정규식은 "결과를 제공하지"않습니다. 당신은 정규 표현식을 사용하여 결과물을 만들어 내고 있습니다. 뭐? –

+0

글쎄, 그들이 나에게 출력을주지 않는다는 것을 안다. 나는 정규식을 사용하고있는 이유가 무엇인지 문자열 안에있는 특정 표현식을 찾고있다. D – user2480628

답변

2

최대 또는 최소 반복 횟수를 지정하려면 {m,n} 구문을 사용하십시오. 이 의미

(?<![A-Z])[A-Z]\d{1,3}(?!\d) 

: 당신이 전에 나중에 숫자 또는 문자가 싶지 않기 때문에, 부정적 예측 및 lookbehind 사용

(?<![A-Z]) -- (Negative lookbehind) Forbid `A-Z` before the match. 
[A-Z]  -- A single capital letter. 
\d{1,3} -- At least 1 digit but not more than 3. 
(?!\d)  -- (Negative lookahead) Forbid digit after the match. 
+0

그것은 다음과 같다 : A1040, E123, A650, B12 내가 원하지 않는 것은 – user2480628

+0

나는 적어도 하나의 숫자를 갖고 싶었다. 그래서 최소 자릿수를 더했습니다. – nneonneo

+0

나는 한 자릿수 만 원했다. 적어도 한 자릿수는 해결했다. – user2480628

2

를 사용하여 다음과 같은 정규식 [A-Z]\d{0,3}

편집 - - ^[A-Z]\d{1,3}$으로 검색 할 경우 A-Z부터 시작하여 1 이상, 많게는 3 digits

+0

사실 나는 그것을 시도했지만 작동하지 않습니다. 우리가 입력 한 것을 볼 때 출력에 E123과 B12가 필요합니다. – user2480628

+0

@ user2480628'최대 3 자리수 '- 0, 1, 2 또는 3 자리를 의미합니다. 그럼 여기서 요구되는 것은 무엇입니까? 너 pls 설명 할 수 있습니까? – Bill

0

정규식은 당신이 (문자에서 대부분의 3 자리 숫자 다음에) 원하는 (내가 생각하는) 일치합니다 :

[A-Z][0-9]{,3} 
+0

한 문자 뒤에 최대 3 개의 숫자가 필요합니다. – user2480628

0

이 패턴을 시도 단어 경계를 사용하는 (자바 스타일로 작성)

\\b[A-Z]\\d{1,3}\\b 

단어 경계에 대한 추가 정보 here

관련 문제