>

(무언가 같은) 문자열을 찾으려고합니다.

$_ = "anna is ann";
if (/([a-zA-Z]+) is \1/) {
    print "matched\n";
}

이 작동하지 않을 것으로 예상했지만 작동합니다. 왜요?


  • 답변 # 1

    와이즈 비즈 시도  또는 print $1;  - print $&;   /([a-zA-Z]+) is \1/ 와 일치   a is a 의 부분 문자열 . 일치를 제한하려면 anna is ann 에서 문자열의 시작 및/또는 끝 (또는 행)에 고정 할 수 있습니다. ) /m 와 함께  각하 와이즈 비즈 경계 단어 ^ 를 사용하십시오.  더 긴 문자열 내에서 일치 시키려면 그래서 :

    $   \b 와 일치합니다  그러나 /^([a-zA-Z]+) is \1$/ 는  또는 "anna is anna" .

    "anna is ann"   "anna is anna " 와 일치합니다  그리고 /\b([a-zA-Z]+) is \1\b/  그러나 "x anna is anna y""sue-ann is ann-marie" 또는 "anna is ann" .

  • 답변 # 2

    위치 3에서 시작하는 6 문자 ( "anna is anne" )와 일치합니다. ). 아마도 당신은

    "anna is annabelle"
    
    
    <시간> <올>

    위치 0 시작. <올>

    a is a  pos 0에서 4 개의 문자를 찾습니다. <올>

    /^([a-zA-Z]+) is \1\z/  위치 4에서 4 개의 문자와 일치합니다.

    [a-zA-Z]+  위치 8 : 역 추적에서 일치하지 않습니다.

    is  pos 0에서 3 개의 문자를 찾습니다. <올>

    \1  위치 3 : 백 트랙에서 일치하지 않습니다.

    [a-zA-Z]+  pos 0에서 2 개의 문자를 찾습니다. <올>

    is  위치 2 : 백 트랙에서 일치하지 않습니다.

    [a-zA-Z]+  pos 0에서 1 개의 문자를 찾습니다. <올>

    is  위치 1 : 역 추적에서 일치하지 않습니다.

    위치 시작하기 1. <올>

    [a-zA-Z]+  pos 1에서 3 문자와 일치합니다. <올>

    is  위치 4에서 4 개의 문자와 일치합니다.

    [a-zA-Z]+  위치 8 : 역 추적에서 일치하지 않습니다.

    is  pos 1에서 2 개의 문자와 일치합니다. <올>

    \1  위치 3 : 백 트랙에서 일치하지 않습니다.

    [a-zA-Z]+  pos 1에서 1 문자와 일치합니다. <올>

    is  위치 2 : 백 트랙에서 일치하지 않습니다.

    위치 시작하기 2. <올>

    [a-zA-Z]+  pos 2에서 2 개의 문자와 일치합니다. <올>

    is  위치 4에서 4 개의 문자와 일치합니다.

    [a-zA-Z]+  위치 8 : 역 추적에서 일치하지 않습니다.

    is  pos 2에서 1 문자와 일치합니다. <올>

    \1  위치 3 : 백 트랙에서 일치하지 않습니다.

    위치 시작하기 3. <올>

    [a-zA-Z]+  pos 3에서 1 문자와 일치합니다. <올>

    is  위치 4에서 4 개의 문자와 일치합니다.

    [a-zA-Z]+  위치 8에서 1 문자와 일치합니다.

    일치! (위치 3에서 시작하는 6 문자)

    is

  • 이전 &quot;No message&quot; error laravel - "메시지 없음"오류 laravel - 사용자 계정 정보를 업데이트하려고
  • 다음 segment - 알 수없는 이유로 nil을 반환하는 current_user ip를 레일