2017-04-02 4 views
2

저는 정규 표현식의 전문가가 아니며 여기에서 변경해야 할 대상을 파악할 수 없습니다.이스케이프되지 않은 왼쪽 대괄호 정규식 오류

나는 정규식에서

이스케이프 왼쪽 중괄호가되지 않습니다 이러한 두 가지 오류가 정규식에 통과 얻을; 정규식 이스케이프 왼쪽 걸림쇠가 사용되지

, 정규식 통과 /usr/share/perl5/Debconf/Question.pm 72 행에 m/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/<-- HERE에 의해 표시; 내가 선 (72)로 이동하면 /usr/share/perl5/Debconf/Config.pm 라인 (30)

에서 m/\${ <-- HERE ([^}]+)}/<-- HERE로 표시 이것은 내가 그것은 중단 경고

while ($rest =~ m/^(.*?)(\\)?\${([^{}]+)}(.*)$/sg) { 
+3

유용한 컨텍스트가 누락 되었기 때문에 추측 해 보겠습니다. 시스템에 최신 Perl 버전을 사용하고 시스템과 함께 제공되는 버전을 사용하고 있습니다. 이제는이 문제로 인해 문제가 발생합니다. 지금은 Perl을 이해하지 못한다면 무시할 수있는 경고입니다. 어쨌든 시스템과 함께 제공되는 스크립트 용으로 제공된 원래 Perl을 더 잘 사용하십시오. Perl을 이해한다면 Regex 안에서'{', 즉'\ {'를 이스케이프 처리하여 경고를 고칠 수 있습니다. –

+0

정말 고마워! 그게 효과가 있었어. 예. sudo apt-get 업그레이드를했는데 어떻게 든 새로운 패키지가 우분투 14.04에 설치되었습니다. 천천히 그들을 하나씩 고치려고 ... T_T이게 내 삼바 나 ldap에 영향을 미칠 수 있습니까? – TheCabDriverCheatedMeToday

+0

변경 사항이 정확히 무엇인지 알 수 없으므로 영향이 무엇인지 알 수 없습니다. –

답변

5

볼 것입니다 코드가 작동을 멈추게 할 것임을 나타내는 향후에.

{과 정확히 일치 시키려면이를 탈출해야합니다.

즉, 첫 번째 {\{으로 바꿔서 문제를 해결할 수 있습니다 (경고 소리가 들리지 않음).

+0

이스케이프 '{'항상 최선의 해결책은 아닙니다. '{0, n}'대신'{, n}'이 사용되어 0..n 반복을 나타냅니다. 이것은 작동하는 데 사용되었습니다. 이제 0은 더 이상 선택 사항이 아닙니다. – cas

+0

@cas, 수정 됨. . . – ikegami

+0

완벽하게 작동합니다! –

관련 문제