2012-12-02 7 views
0

###### 사이의 내용을 일치시켜야합니다. 이제는 정규 표현식에서 "works"를 찾았지만 시작 부분과 끝 부분에 새 줄을 추가했습니다. , 내 인생을 복잡하게 만든다.Regex 긍정적 인 lookbehind와 긍정적 인 lookahead 사이에 여러 줄 일치

(?<=\#\#\#)[\w\W]*?(?=\#\#\#) 

나는 새로운 라인없이 목적으로 만 내용을 일치시킬 수 있을까 :

이 내 정규식입니다.

일부 샘플 텍스트 :

### 
stackoverflow.com - penguin;stackoverflow;html;nospin 
http://stackoverflow.com 
Writing the perfect question 
How to ask questions the smart way 
Help vampires 
How to ask a question 
### 
stackoverflow.com - pyramid;stackoverflow;bb;spin 
http://stackoverflow.com 
Writing the perfect question 
How to ask questions the smart way 
Help vampires 
How to ask a question 
### 
stackoverflow;stackoverflow;wiki;nospin 
http://stackoverflow.com 
Writing the perfect question 
How to ask questions the smart way 
Help vampires 
How to ask a question 
### 
stackoverflow;stackoverflow;bb;spin 
http://stackoverflow.com 
Writing the perfect question 
How to ask questions the smart way 
Help vampires 
How to ask a question 
### 
+0

일치 항목에서 개행을 제거하기 만하면 문제가 생깁니 까? –

+0

나는 이것이 당신이하려는 것을 모호하게하기 때문에 정규 표현식을 잘 사용하지 말 것을 제안한다. Regexes는 개별 텍스트 행에서 매우 훌륭하지만 텍스트 블록을 처리 할 때는 매우 복잡합니다. 어떤 언어를 사용하고 있습니까? 행을 직접 배열로 읽어 들인 다음,'###'을 치면 읽은 행을 처리하는 것이 더 나을 것입니다. –

+0

ZennoPoster라고하는 뭔가 - 기본적으로 그 엿 같은 작은 프레임 워크를 가지고 작업 할 때 저는이 일에 상당히 제한되어 있습니다. –

답변

0

당신이 주장 뒤에 /를 내다에 줄 바꿈을 추가하는 시도 할 수 있습니다 : 정규식 일치에서 그들을 유지해야

(?<=###\n)[\w\W]*?(?=\r?\n###) 

.

+0

대단히 고맙습니다. (? <= ### \ n) [\ w \ W] *? (? = ### \ n)처럼 일하려고했으나 효과가 없었습니다. 많은 번거 로움. 감사! –

+3

@CarolRyals 카일의 노력에 대한 감사의 표시는 대답을 수락하여 답변 옆에있는 체크 표시를합니다. 그러면 그에게 평판이 주어지며 (또한 조금은 당신에게) 평판이 좋을 것이며, 문제가 해결되었다는 (그리고 어땠는지) 미래의 방문객에게도 보여줄 것입니다. –

+1

@Kyle lookbehind가 가변 길이이기 때문에 전체 정규식 엔진에서는 작동하지 않습니다. 예를 들어 Java는 lookbehind 안에 유한 길이의 고정 길이 가능성 (2)이 있기 때문에 허용합니다. 예를 들어 Perl은 이것을 질식시킬 것입니다. 또한'\ r? \ n'을 사용하여 플랫폼에 독립적이 되려고 할 때, 모든 것은'(? : \ n | \ r \ n?)';)을 의미 할 것입니다 –

관련 문제