(?xm) ^ # Beginning of line (?: . # Any character except newline (?= # Lookahead .*+\n # Move to next line ( ?+ . ) # Add a character to capturing group 1 .*+\n # Next line ( ?+ . ) # Add a character to capturing group 2 ) )*? # Repeat as necessary X .*+\n # X on first line, advance to next line ?+ # If capturing group 1 is defined, use it X .*+\n # X on second line, advance to next line ?+ # If capturing group 2 is defined, use it X # X on third line이 표현식은 자체 참조 캡처 그룹을 통해 미리보기를 활용합니다. 각 줄 반복에 대해 문자를 추가하고 "계산"합니다. 모든 조건이 충족되는 경우에만 정규식이 일치하여 형성이 있음을 나타냅니다.
일치 Length 사용
PCRE 및 Perl(및 유사한 버전) 정규식을 사용하여 발생 횟수를 직접 계산할 수 없는 경우 대체 솔루션의 길이를 측정값으로 사용하는 것이 대안입니다. 다음 표현식의 모든 항목을 "$3"으로 바꾸면 결과 문자열의 길이가 개수를 제공합니다.^ (?: (?: # Match .+? characters . (?= # Count the same number on the following two lines .*+\n ( ?+ . ) .*+\n ( ?+ . ) ) )+? (?<= X ) # Till the above consumes an X (?= # That matches the following conditions .*+\n ?+ (?<= X ) .*+\n ?+ (?<= X ) ) (?= # Count the number of matches .*+\n ( ?+ . ) # Number of matches = length of ) )* # Repeat as long as there are matches on this line .*\n? # Remove the rest of the line이 표현식은 질문 1과 유사한 접근 방식을 사용하지만 계산된 문자에 X를 포함하고 숫자를 수량화합니다. 미리보기를 사용하여 일치 항목을 찾습니다.
다음을 사용하여 일치 일치
대부분의 정규 표현식에서는 가변 길이 뒤돌아보기를 사용할 수 없지만 Java 및 .NET과 같은 일부 정규식에서는 부분적인 솔루션을 제공할 수 있습니다. LookBehind를 사용하면 대체 결과의 길이에 의존하지 않고 발생 횟수를 직접 계산할 수 있습니다.위 내용은 정규식을 사용하여 ASCII '이미지'에서 세 개의 연속된 'X' 문자의 수직 형태를 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!