2012-01-26 2 views
1

정규식을 사용하여 텍스트 파일을 검색하는 소프트웨어를 사용하고 있습니다. 그러면 정규 표현식과 일치하는 파일을 검사 할 수 있습니다.REGEX - 서로의 두 문자열 WIthin x Chars를 일치시키는 방법

두 개의 문자열이 있어야하고 두 번째 문자열이 첫 번째 문자열 다음에 나오고 첫 번째 문자열 다음에 x 개의 문자 이상이어야하는 경우를 검색해야합니다. 이 경우 두 번째 문자열의 마지막 문자는 항상 아포스트로피입니다. 문자열 하나 "ABC"문자열이 찾고 예를 들어

는 "XY '는"여기서 문자열이 문자열 하나의 종료 후 5 곳보다는 더 이상 시작되지해야합니다

"ABCxxxxXY" // match 

"ABCxxxxxxxxxXY" // not a match. 

또 다른, 어쩌면 더 나은, 이 방법은 문자열 1을 포함하는 일치 항목을 정의한 다음 다음 아포스트로피 바로 앞에 "XY"가 포함되도록 정의하는 것입니다.

"ABCxxxxxxxxXY" // match. 

"ABCxxxxxxxxx'xxxxxXY" // not a match. 

감사

마이크 토마스 당신은 사이에 일치의 정확한 수를 지정 시도 할 수

+1

관련 답변을 찾았습니까? 당신이 가진 모범은 서로 모순되어 혼동을 일으킬 수 있습니다. –

+0

'문자열 2는 문자열 1 끝 뒤 5 칸 이하로 시작해야합니다. ' _spaces_ 대신 _places_을 (를) 사용하셨습니까? –

+0

Shiplu의 답변에 제안 된 수정 사항을 제출하신 것을 확인합니다. 대신 질문에 적용해야합니다. –

답변

3

문자열 하나 "ABC"문자열이 찾고있는 'XY'는 "여기서 문자열이이 할 것 문자열 하나

이 끝난 후에는 5 개 이상의 공백을 시작 없어야합니다.


또 다른

/ABC.{1,5}XY/ 

, 어쩌면 더 나은이 보는 방법은 다음 "XY"바로 옆에 아포스트로피를 선행이 포함 된 문자열을 포함하는 것으로 일치를 정의하는 것입니다. 당신이 필요

,

/ABC[^']*'.*(?=XY)XY/ 
+0

후행 그가 * * ** 장소 ** 의미라고 생각합니다. –

+0

예. 내 생각에 그것이 영업 이익이 의미하는 바였습니다. –

+0

요셉, 고마워요. 그렇습니다. 나는 장소를 써야했습니다. – user772047

0

.

^ABC.{0,5}XY$

이 "ABC부터 시작 XY로 끝나는 캐릭터의 모든 종류의 0-5 반복을 가진 아무것도 맞 춥니 다."라고

+0

문제는 얼마나 많은 문자가 두 문자열 사이에 있을지 모르기 때문입니다. 적어도 두 개는되지만 30 개까지 될 수 있습니다. MT – user772047

+0

그런 다음 {2,30}에서 변경할 수 있습니다. 정규식은 범위에 지정된 문자 수와 일치합니다. 단순화 된 사례 대신 실제로 수행중인 작업을 게시하는 경우 관련 답변을받는 것이 더 많은 행운을 가질 수 있습니다. –

+0

또한 부수적으로, 문자 유형을 알고 있다면 그것을 사용하는 것이 더 낫습니다. '.'는 개행과 기호를 포함한 문자와 일치하므로 바람직하지 않을 수 있습니다. 대체 예는'[A-Za-z1-9]'로 모든 영숫자와 일치합니다. –

0
/ABC[^\']{0,5}XY'/ 

는 두 번째 질문과 일치해야합니다.

관련 문제