[regex] 정규식 : 첫 번째 문자 발생까지 일치

특정 문자가 처음 나타날 때까지 모든 것과 일치하는 패턴을 찾고 있습니다 . “;” – 세미콜론 .

나는 이것을 썼다 :

/^(.*);/

그러나 실제로 세미콜론이 마지막으로 나타날 때까지 모든 세미콜론을 포함합니다.



답변

당신은 필요

/[^;]*/

[^;]A는 문자 클래스 , 그것은 모든하지만 세미콜론 일치합니다.

perlre맨 페이지 를 인용하려면 :

문자 목록을 []로 묶어 문자 클래스를 지정할 수 있으며,이 문자는 목록의 모든 문자와 일치합니다. “[“뒤의 첫 문자가 “^”이면 클래스는 목록에없는 문자와 일치합니다.

이것은 대부분의 정규식 방언에서 작동합니다.


답변

할 것이다;

/^(.*?);/

작업?

?게으른 연산자 일치 전에 가능한 한 적게되도록 정규식 잡고있다 ;.


답변

/^[^;]*/

[^;]는 세미콜론을 제외한 모든 항목과 일치합니다. 대괄호는 집합 일치 연산자이며, 본질적 으로이 문자 집합의 모든 문자와 일치 ^하므로 처음에는 역 일치 하므로이 세트에 없는 것은 일치 시킵니다.


답변

시험 /[^;]*/

regex character classes자세한 내용은 Google 을 참조하십시오.


답변

시험 /[^;]*/

그것은 부정적 캐릭터 클래스 입니다.


답변

샘플 텍스트:

"this is a test sentence; to prove this regex; that is g;iven below"

예를 들어 위의 샘플 텍스트가 있으면 정규 표현식 /(.*?\;)/은 세미콜론을 ;포함하여 세미콜론 ( ) 이 처음 나타날 때까지 모든 것을 제공합니다 ."this is a test sentence;"


답변

이것은 정규식 솔루션이 아니라 문제 설명에 충분히 간단한 것입니다. 문자열을 나누고 배열에서 첫 번째 항목을 가져옵니다.

$str = "match everything until first ; blah ; blah end ";
$s = explode(";",$str,2);
print $s[0];

산출

$ php test.php
match everything until first