2017-03-04 4 views
-5

펄 정규 표현식에서 문자열을 추출하기 위해 정규 표현식을 작성하려고합니다.'까지 일치하는 방법.' in string using perl

문자열은 무언가 같이 할 수있다 :

나는 사람입니다. 나는 여자가 아니다.

나는 '.'의 첫 번째 항목에 일치 싶지만 [^.]를 사용하는 경우, 그것은 '나는' '나는 사람입니다'대신, 즉 첫 번째 문자를 반환합니다.

[] 표현을 어떻게 작성합니까?

+1

'^. *? \.'는 처음부터 시작하여 '\ .' 또는 원하는'. '까지 캡처합니다. – MohaMad

답변

2

당신이 사용할 수있는 문자열의 시작 부분에 점이없는 문자의 수를 의미

^[^.]* 

+0

첫 번째 캐럿'^'은 필요 없습니다. 어쨌든 문자열의 시작 부분에서 정규 표현식 매칭이 시작되므로'[^.] *'는 잘 할 것입니다. – Borodin

+3

'^'를 사용하면 읽기 쉽습니다. '[^.] *. '와 같은 더 복잡한 패턴에서 불필요한 역 추적을 막기 때문에 좋은 습관이기도합니다. – ikegami

-1

당신은 한정사 (당신이 당신의 패턴을 원하는 얼마나 많은 시간을 추가해야 일치시킬). 기본적으로 하나입니다.

[^.]{5} 

이 항목은 .이 5 번과 일치합니다.

[^.]{2,} 

이것은 두 번 이상 .과 일치하지 않습니다.

[^.]{2,5} 

이것은 2, 3, 4 또는 5 번이 아닌 .과 일치합니다.

[^.]* 

수량 어 *은 0 회 이상 (이 {0,}에 대한 바로 가기입니다)을 의미한다. 따라서 이것은 . 번이 아닌 다른 것과 일치합니다.

[^.]+ 

수량 어 + 한 번 또는 그 이상의 의미 (그것은 {1,}에 대한 바로 가기입니다). 따라서 이것은 .이 아닌 모든 것과 일치합니다. 이것은 당신이 원하는 것입니다.

[^.]? 

수량 어 ?는 0 번 또는 한 번을 (이 {0, 1}에 대한 바로 가기입니다)을 의미한다. 따라서 이것은 .이 아닌 0 번 또는 한 번과 일치합니다.

+0

왜 이것을 downvote 하시겠습니까? – math2001