정규식, 여러 줄을 일치시키는 방법?
다음 From
에서 Subject
줄 끝까지 줄 을 일치 시키려고합니다 .
....
From: XXXXXX
Date: Tue, 8 Mar 2011 10:52:42 -0800
To: XXXXXXX
Subject: XXXXXXX
....
지금까지 :
/From:.*Date:.*To:.*Subject/m
그러나 그것은 제목 줄의 끝과 일치하지 않습니다. 추가를 시도 $
했지만 효과가 없었습니다.
/m
수정자를 사용하여 여러 줄 모드를 활성화 할 수 있으며 (예 : 줄 .
바꿈 일치 허용) 을 사용 ?
하여 비 탐욕 일치를 수행 할 수 있습니다 .
message = <<-MSG
Random Line 1
Random Line 2
From: person@example.com
Date: 01-01-2011
To: friend@example.com
Subject: This is the subject line
Random Line 3
Random Line 4
MSG
message.match(/(From:.*Subject.*?)\n/m)[1]
=> "From: person@example.com\nDate: 01-01-2011\nTo: friend@example.com\nSubject: This is the subject line"
http://ruby-doc.org/core/Regexp.html을 참조 하고 "multiline mode"와 "greedy by default"를 검색하십시오.
루비를 사용하는 경우 다음을 시도해 볼 수 있습니다.
Regexp.new("some reg", Regexp::MULTILINE)
루비를 사용하지 않는 경우 다음 질문을 해킹하는 것이 좋습니다.
- 모든 "\ n"을 SOME_SPECIAL_TOKEN으로 바꿉니다.
- 정규 표현식을 검색하고 다른 작업을 수행하십시오.
- 복원 : SOME_SPECIAL_TOKEN을 "\ n"으로 바꿉니다.
줄 바꿈을 일치 시키려면 먼저 모든 줄 바꿈 문자를 텍스트에 표시되지 않는 다른 문자 (또는 문자 시퀀스)로 대체하는 것이 좋습니다. 예를 들어, 하나의 문자열 변수에 모든 텍스트가 aString.split("\n").join("|")
있는 경우 문자열의 모든 줄 바꿈을 파이프 문자로 바꾸는 것과 같은 작업을 수행 할 수 있습니다 .
또한 정규 표현식에서 개행 문자를 일치시키는 방법에 관한 이전 질문에 대한 Alan Moore의 답변 을 참조하십시오.
시험:
/...^Subject:[^\n]*/m
다음 데이터 사용 :
From: XXXXXX
Date: Tue, 8 Mar 2011 10:52:42 -0800
To: XXXXXXX
Subject: XXXXXXX
다음 정규식이 마법을 수행합니다.
From:([^\r\n]+)[\r\n]+Date:([^\r\n]+)[\r\n]+To:([^\r\n]+)[\r\n]+Subject:([^\r\n]+)[\r\n]+
But I would recommend that you don't try and do this in 1 regex. Push into a regex "^(\w+):(.+)$" line by line, unless you are sure that the sequence of the FROM/DATE/TO/SUBJECT is not going to change ;)
ReferenceURL : https://stackoverflow.com/questions/5239997/regex-how-to-match-multiple-lines
'IT story' 카테고리의 다른 글
Asp.net MVC 페이지가 이미지 파일에 대한 Mime 유형 경고를 제공합니다. (0) | 2021.01.07 |
---|---|
Razor actionlink 자동 생성? length = 7 in URL? (0) | 2021.01.07 |
열거 형에 패키지 전용 생성자가있는 이유는 무엇입니까? (0) | 2021.01.07 |
프록시 함수를 통해 console.log에 첫 번째 클래스 인수로 인수 전달 (0) | 2021.01.07 |
Android OpenGL 텍스처 압축 (0) | 2021.01.07 |