특정 문자가 처음 나타날 때까지 모든 것과 일치하는 패턴을 찾고 있습니다 . ";" - 세미콜론 .
나는 이것을 썼다 :
/^(.*);/
그러나 실제로 세미콜론이 마지막으로 나타날 때까지 모든 세미콜론을 포함합니다.
\w+(?!([^]+;)|;)
하지만 볼 수없는 이유는 무엇입니까? .+(?!([^]+;)|;)
특정 문자가 처음 나타날 때까지 모든 것과 일치하는 패턴을 찾고 있습니다 . ";" - 세미콜론 .
나는 이것을 썼다 :
/^(.*);/
그러나 실제로 세미콜론이 마지막으로 나타날 때까지 모든 세미콜론을 포함합니다.
\w+(?!([^]+;)|;)
하지만 볼 수없는 이유는 무엇입니까? .+(?!([^]+;)|;)
답변:
당신은 필요
/[^;]*/
는 [^;]
A는 문자 클래스 , 그것은 모든하지만 세미콜론 일치합니다.
perlre
맨 페이지 를 인용하려면 :
문자 목록을 []로 묶어 문자 클래스를 지정할 수 있으며,이 문자는 목록의 모든 문자와 일치합니다. "["뒤의 첫 문자가 "^"이면 클래스는 목록에없는 문자와 일치합니다.
이것은 대부분의 정규식 방언에서 작동합니다.
foo=bar;baz=bax;bab=baf
과 일치 bab=baf
심지어 더 없다 ;
정확히 내가 필요. 확실하지 왜 작동하지만 사양은 경기의 모든하지만 대상 기호 ... 말한다면
할 것이다;
/^(.*?);/
작업?
는 ?
게으른 연산자 일치 전에 가능한 한 적게되도록 정규식 잡고있다 ;
.
/^[^;]*/
[^;]는 세미콜론을 제외한 모든 항목과 일치합니다. 대괄호는 집합 일치 연산자이며, 본질적 으로이 문자 집합의 모든 문자와 일치 ^
하므로 처음에는 역 일치 하므로이 세트에 없는 것은 일치 시킵니다.
샘플 텍스트:
"this is a test sentence; to prove this regex; that is g;iven below"
예를 들어 위의 샘플 텍스트가 있으면 정규 표현식 /(.*?\;)/
은 세미콜론을 ;
포함하여 세미콜론 ( ) 이 처음 나타날 때까지 모든 것을 제공합니다 ."this is a test sentence;"
;
정규식 특수 문자가 아니기 때문에 char 을 벗어날 필요 는 없습니다. 그룹화 ()
도 필요하지 않습니다. 당신은 함께 갈 수 있습니다/.*?;/
?
문자는 경기를 게으르게 만듭니다 (가능한 한 몇 번 일치시킵니다). 첫 번째 세미콜론까지 정규식 일치 문자를 생각하면 포기하기 때문에 더 이상 가지 않습니다 (lazy;))
이것은 속성을 포함하여 xml 태그의 모든 문자를 일치시키는 방법을 알아 내려고 노력하면서 매우 도움이되었습니다. 나는 "모든 것을 끝까지 일치시킨다"라는 문제에 부딪쳤다.
/<simpleChoice.*>/
그러나 다음과 같은 문제를 해결할 수있었습니다.
/<simpleChoice[^>]*>/
이 게시물을 읽은 후. 모두 감사합니다.
<!DOCTYPE>
태그의 구문 오류가있는 XML 문서를 수정했습니다 . 파서가 처리 할 수 없었기 때문에.
/^(.*?);/
또한 작동해야 하지만 ( 욕심지지 않음) 주어진 대답을 사용[^;]*
하는 것이 좋습니다.