2012-03-07 5 views
1

왜 긍정적 인 선견자가 굵게 표시된 텍스트와 일치하지 않습니까? (안하지 -.>)Regex 긍정적 인 선견문

[_a-z0-9]+(?=\.|->)[_a-z0-9]+ 
hints6. ai_flags = 0; // 주석 hints.ai_flags
힌트 6. ai_family = AF_UNSPEC;
INT newsocket = 소켓 ( 결과 -> ai_family, 결과 -> ai_socktype를, 결과 -> ai_protocol); 첫째

답변

5

, 당신은 (당신이 일치 \.를 원 . 일치 '아무것도' ".")를 .을 탈출해야 -

초, 룩어의 모습을 [이상한 사람이 그 문제를 해결하기 위해 질문을 편집] 앞으로 - 아무것도 소비하지 않습니다. 그래서, 당신은 ., [_a-z0-9]+(?=\.|->) "hints6"를 소모 (다음의 다음 문자가 될 것이라고 확인, 계속 찾고 ".")입니다 탈출 경우에도 마찬가지입니다. 그 후에 [_a-z0-9]+은 "."과 일치하지 않습니다.

나는 당신이하려는 것을 정말로 이해하지 못합니다. 내가 볼 수있는 한, [_a-z0-9]+(?:\.|->)[_a-z0-9]+은 미리보기없이 원하는 결과를 얻습니다 ((?:...)은 결과에 바인딩되지 않는 그룹 임).

일반적으로 일치 할 수 있기 때문에 일반적으로 lookahead가 필요하지 않습니다. 그룹과 일치시키고 자 할 때 주로 사용되지만 일부 (이상한) 이유는 미리 특정 사례를 확인해야합니다.

[편집 :] 단지 두 단어를 캡처하려면 ([_a-z0-9]+)(?:\.|->)([_a-z0-9]+)을 사용하십시오 (각 단어 당 하나씩 두 개의 그룹이 캡처 됨).

[edit2 :]이 구문 하이 라이터 용이면 중 하나를 단어로 강조 표시 할 수 있다고 생각합니다. 그것은 설명보다 보여 쉽게 : 점을 강조하지 않고있는 두 단어를 강조 표시됩니다 중 "단어 .word 다음"또는 ". 단어 앞에 단어를", 강조 표시됩니다

(?:[_a-z0-9]+(?=(?:\.|->)[_a-z0-9]+)|(?<=[_a-z0-9]+(?:\.|->))[_a-z0-9]+) 

. 그들은 두 개의 개별적인 일치지만, 구문 형광펜은 그것에 대해 신경 쓰지 않습니다 (나는 가정합니다).

+0

'[_a-z0-9] + (? : \. | ->) [_ a-z0-9] +'를 사용했지만'hints6'와'ai_flags 만 원할 때'hints6.ai_flags'와 일치합니다. ' –

+0

편집을 참조하십시오. 1234556 –

+0

그룹화하지 않고도 가능합니까? 내가 사용하는 정규식은 그룹을 호출하는 메소드를 제공하지 않습니다. 그래서 대체 방법을 사용하려고했습니다. –

관련 문제