하나

2013-06-28 2 views
1

에 2 개 정규식 규칙을 결합 내가 모든 행에하나

이 일치하는 첫 번째 첫 2 개 문자와 마지막 2 수와 일치해야하는 정규식 규칙 그룹에

에 가입하는 특수 문자가 있습니까 그 2 RUL에 가입하는 방법이 개 문자

(^..) 

이 경기 마지막 두 숫자

([0-9][0-9]$) 

네? 성공 withou

(^..)([0-9][0-9]$) 
+0

어떤 언어/환경/정규 표현식을 사용하고 있습니까? –

답변

0
(^..).*([0-9][0-9]$) 

당신은을 사용할 수 있습니다 * 변경 용을

+0

하지만 그 사이의 모든 것을 제외하고 싶습니다. 난 그냥 처음 두 글자와 마지막 두 자리가 필요합니다 –

+0

대괄호는 정규식 '캡처'입니다. . *는 괄호 안에 들어 있지 않으므로 캡처되지 않습니다. 처음 2 글자와 마지막 2 글자 만 캡처됩니다. – codetantrik

4

그럼 당신은뿐만 아니라 사이에있는 부분을 일치해야한다는 것을 시도. 그냥 임의 많은 임의의 문자를 허용 :

(^..).*([0-9][0-9]$) 

참고가 줄 바꿈과 일치하지 않는 . 가장 맛이있다. 입력 내용에 줄 바꿈이 포함 된 경우 . 의미를 변경하려면 s ("단일 줄"또는 때때로 "도트") 한정자를 사용하십시오. 그렇지 않으면 (예 : 자바 스크립트에서) [\s\S]*을 사용하십시오. 그룹화

^.. 
[0-9][0-9]$ 

필요 없음/캡처 및 반복 :

은 또한 쉽게 더 읽기와 두 연속 정규 표현식에를 사용하는 것이 더 효과적 일 수 있습니다.

편집 :이 두 가지가 완전히 동일하지 것을

참고. 첫 번째 문자는 적어도 4 자 이상이어야합니다 (..에 일치하는 두 문자는 [0-9][0-9]으로 다시 일치 할 수 없으므로). 두 번째 문자는 두 자릿수 만 포함 할 수 있습니다.이 경우 ..은 동일한 자릿수와 일치합니다. 그것은 당신이 찾고있는 의미론에 달려 있습니다. 하나의 정규식을 사용하지만 lookaheads를 사용하는 것이 두 정규식 솔루션에 해당 세 번째 솔루션 :

^(?=(..))(?=.*([0-9][0-9])$) 

이것은 당신이 x12, x112되는 두 번째 인 첫 번째 캡처 일치시킬 수있다.

Alan Moore을 주셔서 감사합니다. pointing this out입니다.

+1

Drat.3 초 후에 나를 이길 :) –

+0

@TimPietzcker 당신이 먼저 이겼다;). 와우 5 개의 동일한 답변. 나는 그걸 전에 보지 못했을 것 같아. –

+0

두 가지 해결책이 동일하지 않습니다. 첫 번째 문자열은 적어도 4 자 길이의 문자열을 요구하며, 두 번째 문자열은'x12' ('x1'과'12'를 반환)와'12' (두 값 모두에 대해'12'를 반환)과 같은 문자열을 일치시킵니다. –

1

당신은 anything goes here를 추가 할 필요가 -.로도 알려져 *

(^..).*([0-9][0-9]$) 
+0

사이에 일치하는 텍스트도 있습니다. 나는 처음 두 글자와 마지막 두 글자 만 표현할 필요가있다. 나는 2 개의 숫자로 끝나는 모든 줄을 가진다. –

0

'사이에 모든 것을'일치하는 행 사이에 추가 문자가 포함 된 경우. "처음 2 개"와 "마지막 2 개"가 있다면 개입 문자를 맞추기 위해 정규 표현식에서 무엇인가가 필요합니다. 다음과 같습니다 :

(^..).*([0-9][0-9]$)