I, 즉 텍스트 파일의 라인 처리하는 동안, C에서 일부 정규식 물건을 실험 하였다불일치
MY NAME IS ;;JOHN
내가 sscanf
을 사용했다 및 sscanf에서의 형식으로 %s %s %s %[^;]
와 일치 매개 변수. 내가 Rubular와이를 테스트 할 때 (즉, 나는 "당신의 정규 표현식"의 [^;]
입력 "당신의 테스트 문자열 :"필드와 ;;test
필드 "), 그것은 test
데이터와 일치
을하지만. 라인
sscanf("MY NAME IS ;;JOHN", "%s %s %s %[^;], str1, str2, str3, str4)
와
네 번째 문자열 str4
사실. 즉, sscanf
반환 3
. 내 지식, 세미콜론 이외의 문자와 일치 [^;]
정규식으로 , 왜 그렇게 일치하지 않습니다 그렇다면 sscanf
이 (가) ;;JOHN
에 일치하지 않는 것 같습니까?
그냥 sscanf
의 문제입니까? 아니면 glibc가 어떤 이유로 정규 표현식을 다르게합니까? sscanf
이 문자열의 첫 번째 문자가 실제로 세미콜론이므로 네 번째 문자열과 일치하지 않으므로 문자열과 정확히 일치하지 않을 수 있습니까? 왜 그것이 3을 반환하는 것입니까?
: 나는 MY NAME IS DOE;;JOHN
같은 라인을 가지고 sscanf
를 사용하는 경우
또한, 함수 4. 여기에
'scanf' 함수는 완전한 정규식 일치를 수행하지 않습니다. –
글쎄, glibc는 정규식을 지원하지만, "full"정규식이없는 scanf는 무엇을 의미합니까? – lu6cifer
'scanf '의 형식은 정규 표현식이 아닙니다. "문자 클래스"구문은 정규식과 유사하지만 정규식이 아닙니다. –