2014-11-06 1 views
0

나는이 정규 표현식이 있습니다두 개 이상의 구두점이있는 모든 행을 선택하는 일반 표현식은 무엇입니까?

\..*?\. 

을하지만 그것은 단지 두 기간이 아닌 모든 구두점 사이에서 선택하고, 그것도 여러 줄에 걸쳐 선택합니다.
마침표가있는 부분에 구두점을 묶는 방법이 있다면이 표현을 수정하여 한 번에 한 줄만 사용하면됩니까?
간단하게하기 위해, 현재는 마침표, 느낌표 및 물음표를 인식하는 표현식 만 필요합니다. 쉼표를 등록 할 필요가 없습니다.

아래의 Nathan과 Agumander 덕분에 \ 대신 [.!]를 사용하는 것이 좋습니다. 지금,하지만 나는 아직도 내 질문의 나머지 절반에 문제가있다.
[.!]. *? [.!?] \ s를 사용하면 구두점 사이의 텍스트가 여러 줄에 걸쳐 강조 표시됩니다. 그래서 여러 구두점이있는 줄만 북마크에 사용할 수는 없습니다.

+1

난 당신이'찾고있는 생각 [\.!?] '이 기간은 모든 문자를 얻을 것이다 , 느낌표 또는 물음표. – Nathan

+0

왜 여러 줄에서 선택합니까? '.'문자는 보통 수정자를 사용하는 경우를 제외하고는 개행을 제외합니다. – Sjlver

+0

@ 네이선 : 백 슬래시는 무엇입니까? –

답변

2

대괄호 쌍 안에 문자를 배치하면 둘 중 하나의 문자와 일치하게됩니다. 귀하가 원하는 경우 [.?!]

두 개가있는 문장을 찾으려면 0 개 이상의 문자로 구분 된 [.!?] 쌍을 찾으십시오. 세트 [.?!] 개 이상으로 문자열을 일치

정규식은 당신이 당신의 정규식에 s 수정을 추가 할 것, [.!?].*[.!?]

. 일치 줄 바꿈을하는 것입니다.

... 그래서 전체 정규식 내가 그것을 알아 냈 /[.!?].*[.!?]/s

+0

모든 정규식 가능 스크립트에서 앞뒤 슬래시 사용법에 대해서는 잘 모르겠지만 \\ [.!]]. * [.!]] \ s를 입력하면 메모장에 마침표가있는 첫 번째 줄이 북마크에 추가됩니다. 분홍색은 전체 문서를 마지막 두 번째 마침표로 표시했습니다. 반면에 [.!]. *? [.!?] \ s는 구두점 사이의 텍스트를 선택하고 줄마다 북마크하지만 줄마다 끊지 않습니다. 다음 줄의 구두점과 함께 한 문장 부호를 선택하기 위해 구두점이 하나있는 줄을 책갈피에 계속 표시합니다. [.!]. *? [.!?] \ s를 중단하여 여러 줄과 일치하지 않게하는 방법이 필요합니다. – Agnotology

0

확인 될 것입니다. 위의 Agumander와 Nathan 덕분에 나는 [.!]를 두 개로 대체했습니다. 내 원래 정규식 :

\ .. *? \. [.!?]. * [.!?]

정규 표현식 끝에 \ s를 넣으면 분홍색이되어서 메모장 ++에서 전체 문서를 선택합니다.
마지막 문제는 "일치하는 줄 바꿈"을 해제하는 것을 기억하고있었습니다.

0

Agumander, 나는 기본적으로 한 줄에 여러 구두점을 찾는 정규식을 요구하고 있다고 생각합니다. 그래서 여기 그것을 할 수있는 방법이 있습니다.

다음은 일치시킬 텍스트입니다. 정규식은 전체에서 첫 번째 줄과 일치하지만 두 번째 줄과 일치하지 않습니다.

Here's a line with multiple punctuation. The entire line will match the regex! 
This line does not have multiple punctuation. 

정규식

^.*(?:[\.?!].*){2,}$ 

설명

^   -- Start matching at the beginning of a line 
.*   -- match any character 0 or more times 
(?:   -- start a new non-capturing group 
    [.?!]  -- find a character matching a period, question mark, or exclamation point. 
    .*  -- match any character 0 or more times 
)   
{2,}  -- repeat the previous group 2 or more times. This is how we ensure there's at least two punctuation marks before considering it a match. 
$   -- end of line anchor, basically stop matching at the end of a line 
관련 문제