2012-09-30 2 views
1

word1과 word2의 첫 번째 일치 항목 사이의 텍스트를 일치시키고 싶습니다. 텍스트에 개행 문자가 포함될 수 있다는 것을 고려하면 가장 좋은 방법은 무엇입니까? 다음과 같은 패턴이 있습니까 : (word1) (word2가 아님) * (word2)?네거티브 시퀀스 일치

답변

3

게으른 한정 기호를 사용하여 word1과 word2 사이에서 가능한 한 적은 수의 문자를 일치시킬 수 있습니다.

(word1).*?(word2) 

MSDN의 quantifiers topic을 참조하십시오.

+0

더 나은 방법은 단어에 대한 둘러보기를 사용하는 것입니다. – usr

+0

단어가 \ n으로 구분되는 경우 작동하지 않습니다. –

+0

'.'이 새 줄을 포함하여 모든 문자와 일치하도록 정규 표현식 옵션을 'Singleline' 플래그를 포함하도록 변경하십시오. –

1

당신은 만일 Singleline 옵션을 사용하여 일치시킬 수 있습니다 : 만일 Singleline에 대한

//use '*' or '*?' depending on what you want for "word1 aaa word2 bbb word2" 
string pattern = "word1(.*)word2"; 
var m = Regex.Match(text1, pattern, RegexOptions.Singleline); 
Console.WriteLine(m.Groups[1]); // the result 

MSDN : ...

그것이 구성 것처럼 입력 문자열을 처리하는 정규 표현식 엔진의 원인 하나의 선. \ n 또는 \ u000A를 제외한 모든 문자와 일치하는 대신 모든 문자 ( )와 일치하도록 마침표 (.) 언어 요소의 동작을 변경하여이 작업을 수행합니다.

+0

이것이 가장 정확한 답변이기 때문에 여기에 내 의견을 추가 할 것입니다. 실제로 단어인지 확인하기 위해 일부 \ b가 필요할 수도 있습니다. 어쩌면 패턴은 "\ bword1 \ b (. *?) \ bword2 \ b"이어야합니다. – Casperah

+0

@Casperah - 가능하지만 OP는 '단어'가 무엇인지에 대해 명확하지 않습니다. –