2013-08-21 3 views
1

정규식 패턴에서 sprintf() 또는 std::cout과 함께 사용 패턴을 추출 할 수있는 "준비된 방법"/ 라이브러리가 있습니까? 정규식 패턴 검증을위한정규식 패턴의 응용 프로그램 사용 역순

내가 'regex.h "

를 사용하여 예를 들어,로 확인하는 패턴을 저장하고있다 : 나는 "A+%06f" 같은 것을 갖고 싶어

"A((\\+|\\-)(\\d|\\.){6})\\r" 
"G((\\+|\\-)(\\d|\\.){6})\\r" 

, "G+%06f"을.

+1

이렇게하는 방법은 없지만 간단한 경우에는 직접 작성할 수 있습니다. 이 대답은 [A +] regexes에 있습니다 : http://stackoverflow.com/a/28862668/2642059 –

답변

0

정규 표현식이 런타임에 빌드되었을 때 (일부 GNU libc 버전에서) 경험 한 "regex.h"은 형식 지정자와 같은 간단한 패턴에 비효율적으로 보이기 때문에 많은 메모리 할당을 한 것처럼 보였습니다. 실제 C 라이브러리 구현은 형식 지정자에 대해 regex.h를 사용하므로 검색 한 것과 같은 함수가 존재하지 않을 수 있습니다.

또한 일반 표현식은 사용자가 지정한 형식 지정자와 일치하지 않는 "A+......"과 같은 문자열과 일치하는 것으로 보입니다.

+0

아니요, "A + ......"와 같은 문자열과는 일치하지 않는 것 같습니다. regex.h는 POSIX이며 GNU libc의 일부 버전이 아닙니다. 그리고 문제는 libc에 그러한 함수가 존재하지 않는다는 것입니다. – Maquefel

+0

@Maquefel :'(\ d | \.) {6}'은 "......", [예] (http : //regexpal.com/? flags = g & regex = % 28 \ d | \. % 29 {6} & 입력 = ...... % 201.2345). – Zeta

+0

@ Zeta - 예. 질문이 분명하지 않으면 나는 분명히 할 수있다. 질문은 패턴 일치 여부와 관련이 없으며 패턴에서 (\\ + | \\ -) \\ d {6}을 인식하고 % + 06d와 같이 바꿀 수있는 준비 라이브러리에 관한 것입니다. 누군가가 그러한 라이브러리의 존재를 알고 있다면, 그에 관한 정보를 제공 할 것입니다. – Maquefel