긴 줄이있는 파일을 구문 분석 할 때 토큰의 공백을 구분합니다. 대부분의 행을 처리하기 전에, n 번째 (작은 n의 경우) 토큰에 어떤 값이 있는지 확인하고 싶습니다. 나는 줄의 대부분을 생략 할 것이므로, 정말로 긴 줄의 대부분을 나눌 필요는 없다. Perl에서 게으른 분할을 수행하는 빠른 방법이 있습니까? 아니면 내 자신을 굴릴 필요가 있습니까?Perl에서 문자열의 특정 부분 만 어떻게 나눌 수 있습니까?
1
A
답변
9
split
연산자에 제한 인수를 제공하여 특정 개수의 토큰이 생성 된 후에 Perl이 분할을 중지하도록 할 수 있습니다.
@fields = split /\s+/, $expression, 4
예를 들어, @list
의 4 요소 3 공백으로 구분 된 필드 다음에 모든 것을 넣어 것입니다. 표현식에 4 개 이상의 필드가있을 때 완전한 분할을 수행하는 것보다 더 효율적입니다.
이 게으른 분할을 수행하고 회선을 추가로 처리해야한다고 결정한 경우 회선을 다시 split
해야합니다. 라인의 길이와 재 처리해야하는 빈도에 따라 여전히 나올 수 있습니다.
또 다른 방법은 당신이 관심있는 라인의 일부를 분할 할 수있다. 예를 들어, 선은 많은 분야를 포함하지만 당신은 4 필드를 필터링 할 그리고 당신은 그 네번째 필드 항상 확신
@fields = split /\s+/, substr($expression, 0, 100);
if (matches_some_condition($line[3])) {
# process the whole line
@fields = split /\s+/, $expression;
...
}
말을 가끔 표현이 두 번 항상 전체 표현을 한 번 분할보다 더 효율적일 수 있습니다 분할, 라인에 100 바이트 전에 발생합니다.
5
LIMIT를 지정하고 긍정적 인 경우,이 필드의 실제 수는 반환 불구하고, EXPR이로 분할됩니다 필드의 최대 수를 나타냅니다 패턴이 EXPR 내에서 일치하는 횟수에 따라 달라집니다 .
my $nth = (split ' ', $line, $n + 1)[$n - 1];
관련 문제
- 1. 문자열의 특정 부분 만 인쇄하는 방법은 무엇입니까?
- 2. 문자열의 특정 부분 만 캐셀링하는 방법은 무엇입니까?
- 3. Perl에서 한 쌍의 단어를 어떻게 잘게 나눌 수 있습니까? 펄에서
- 4. 어떻게 일치하지 않는 문자열의 일부분을 나눌 수 있습니까?
- 5. Perl에서 중복되는 부분 문자열을 어떻게 집계 할 수 있습니까?
- 6. 어떻게 이것을 나눌 수 있습니까?
- 7. 문자열의 특정 부분을 어떻게 얻을 수 있습니까?
- 8. 어떻게 "더 많은 지점을 나눌 수 있습니까?"
- 9. 어떻게 일치하는 부분 만 반환합니까?
- 10. 문자열을 사전으로 나눌 수 있습니까?
- 11. Regex.Replace는 문자열의 시작 부분 만 바꿉니다.
- 12. 데이터베이스에서 문자열의 해시 태그 부분 만 선택하십시오.
- 13. 아이폰 애플리케이션에서 정수를 어떻게 나눌 수 있습니까?
- 14. 어떻게 asp.net에서 스크립트와 스타일을 나눌 수 있습니까?
- 15. codeigniter에서 student_no를 어떻게 나눌 수 있습니까?
- 16. 어떻게 PHP에서 문자열에서 데이터를 나눌 수 있습니까?
- 17. 어떻게 셀을 두 행으로 나눌 수 있습니까?
- 18. 파이썬에서이 긴 행을 어떻게 나눌 수 있습니까?
- 19. 문자열의 특정 문자 만 허용합니다.
- 20. 배열의 요소가 주어진 문자열의 부분 문자열인지 어떻게 알 수 있습니까?
- 21. 문자열의 일치하는 부분 만 가져 오기 R
- 22. Perl에서 특정 문구가있는 문장을 어떻게 추출 할 수 있습니까?
- 23. Perl에서 바이너리 스칼라의 특정 부분을 어떻게 수정할 수 있습니까?
- 24. Perl에서 특정 중첩 괄호와 어떻게 일치시킬 수 있습니까?
- 25. 웹 페이지의 내부 부분 만 어떻게 변경할 수 있습니까?
- 26. 이미지 파일의 특정 부분 만 이미지에 표시합니다.
- 27. 어떻게 파이썬에서 다른 부분 문자열 뒤에 나오는 부분 문자열의 첫 번째 항목을 찾을 수 있습니까?
- 28. 2 문자열의 부분 비교
- 29. 문자열의 특정 부분이 시작되는 위치를 어떻게 찾을 수 있습니까?
- 30. Drawable의 특정 부분 만 동적으로 변경합니다.