"(? {code})", "(?? {code})"또는 "특수 후행 제어 동사"와 같은 "경고"라는 레이블이 붙은 정규식 기능은 어떻게 처리해야합니까? 경고를 얼마나 심각하게 받아 들여야합니까?"경고"레이블이 붙은 정규식 기능은 어떻게 처리해야합니까?
1
A
답변
4
나는 그들이 여기에 머물러 있다고 생각합니다. 특히 코드 이탈이 그 중 하나입니다. 코드 도피는 우리와 함께 10 년 이상되었습니다.
예기치 않은 방식으로 코드를 호출 할 수있는 희소성이 use re "eval"
에 의해 처리됩니다. 또한 정규식 정규식은 IIRC 5.12까지는 다시 사용할 수 없으므로 유용성이 제한 될 수 있습니다.
문자열 평가 버전 (??{ code })
은 재귀를 수행하는 유일한 방법 이었지만, 5.10 이후에는 훨씬 더 좋은 방법이 있습니다. 속도 차이를 벤치 마크하면 대부분의 경우 평가 방법이 느려집니다.
대부분 블럭 평가 버전 (?{ code})
을 사용하여 디버깅을 추가합니다. 이는 use re "debug"
과 다른 granualarity에서 발생합니다. 그것은 막연하게 블록 보증 버전의 반환 값이 유용하지 않다는 것을 나에게 귀찮게했습니다. 은입니다. 내가 알아 낸 전에
qr{
^(
(\p{Decimal_Number})
(?(?= (\d)) | $)
(?(?{ ord $3 == 1 + ord $2 }) (?1) | $)
) $
}x
: 그냥 숫자가 오른쪽으로 한 각 위치를 감소 된 숫자로 구성되었는지 여부를 테스트하기 위해이 패턴처럼 조건부 패턴의 테스트 일부로 사용했다 조건부를 사용하면 다음과 같이 작성했습니다.
qr{
^(
(\p{Decimal_Number})
(?= $ | (??{ chr(1+ord($2)) }))
(?: (?1) | $)
) $
}x
이는 훨씬 효율적이지 않습니다.
역 추적 제어 동사가 최신 버전입니다. 나는 주로 일치의 가능한 모든 순열을 얻기 위해 그것들을 사용하며, 그게 단지 (*FAIL)
만 필요합니다. 나는 특히 "매우 실험적"이라고 표시된 (*ACCEPT)
기능이라고 생각합니다. 이것들은 5.10 이후로 우리와 함께했습니다.
관련 문제
- 1. IsChanged 기능은 어디에 처리해야합니까?
- 2. HTML 정규식 앞뒤에 붙은 단어
- 3. 어떻게 처리해야합니까?
- 4. 일회용 물건을 어떻게 처리해야합니까?
- 5. javax.persistence.OptimisticLockException을 어떻게 처리해야합니까?
- 6. 들소 : 갈등을 어떻게 처리해야합니까?
- 7. 소프트웨어 패키지는 어떻게 처리해야합니까?
- 8. XML 내부의 URL을 어떻게 처리해야합니까?
- 9. Java에서 멀티 스레딩을 어떻게 처리해야합니까?
- 10. libSystem.B.dylib에서 fsync 예외를 어떻게 처리해야합니까?
- 11. 애플리케이션에서 URL 라우팅을 어떻게 처리해야합니까?
- 12. 어떻게 PHP와 아파치에서 이미지로드를 처리해야합니까?
- 13. D에서 C 문자열을 어떻게 처리해야합니까?
- 14. 익명 사용자 입력을 어떻게 처리해야합니까?
- 15. .NET에서 소켓 분리를 어떻게 처리해야합니까?
- 16. PHP에서 쿼리 동기화를 어떻게 처리해야합니까?
- 17. 예전 SVN 브랜치를 어떻게 처리해야합니까?
- 18. 코드에서 celeryd_multi 작업을 어떻게 처리해야합니까?
- 19. 대기열 wcf 메시지는 어떻게 처리해야합니까?
- 20. LPCWSTR은 무엇을 의미하며 어떻게 처리해야합니까?
- 21. C/Windows 경로를 어떻게 처리해야합니까?
- 22. 불완전한 패킷 버퍼는 어떻게 처리해야합니까?
- 23. 어떻게 정규식
- 24. 이 기능은 어떻게 작동합니까?
- 25. 발신자 기능은 어떻게 찾습니까?
- 26. MD5 기능은 어떻게 작동합니까?
- 27. 이 기능은 어떻게 사용됩니까?
- 28. 유닉스 기능은 어떻게 작동합니까?
- 29. 정규식 조건 난에 정규식 작성합니다 어떻게
- 30. 이 "일"기능은 어떻게 작동합니까?
(? {ord $ 3 == 1 + ord $ 2}) : 정규식이 사실이 아니면 중지됩니까? –
@sid_com :'(? 1)'브랜치라면 true, 그렇지 않으면'$'를 취합니다. – tchrist