2012-01-30 2 views
0

다음 문자열 형식이 있습니다.문자열 검색과 일치하는 패턴이 있습니까?/

({'BTAddress': <'00:22:58:07:76:9B'>, 'Name': <'Some-Name'>, 'Alias': <'some-Name'>, 'Class': <uint32 12316>, 'Adapter': <objectpath '/org/bluez/3196/hci0'>},) 

나는, 패턴 현명한 분석을 사용하는 어떤 조언을 C. 위의 문자열을 구문 분석하는 대신 원시 구문 분석을하고 싶습니까? 도움 주셔서 감사합니다.

+0

다음과 같이 – selbie

답변

1

strtok : http://www.cplusplus.com/reference/clibrary/cstring/strtok/을 사용할 수 있습니다. 작동 시키려면 약간의 수작업을해야하지만 잘 작동합니다.

참고 : 패스 한 char 포인터가 조작됩니다 !!

+0

strtok은 분명한 해결책처럼 보이지만 strtok을 사용하여 각 키 : 값 쌍을 쉼표 (",")로 구분하려고하면 쉼표가 집합의 값 중 하나에 대해 따옴표 안에 표시되면 지저분해질 수 있습니다. – selbie

+0

''strtok()'는 "* raw parsing * *"에 매우 가깝습니다. – Clifford

+0

문자열을 키 - 값 토큰으로 분리하기 시작할 것입니다. 그런 다음 토큰을 분리하고 시작과 끝을자를 수 있습니다. 그것은 꽤 원시 파싱이지만 구문 분석 할 문자열의 종류를 지정하지 않고 .. omu_nergu와 같은 정규식과 결합하면 나에게도 멋지게 보입니다. – ezdazuzena

1

모든 POSIX 호환 C 컴파일러는 <regex.h>을 제공해야하며이를 지원할 정규 표현식을 제공해야합니다.

+0

내가 틀렸다면, 나는 정규식을 들여다 보았다. 그리고 나는 키/값 메서드를 얻는 방법을 보지 못했다. .. 어떤 조언? – Whoami

0

정규 표현식 라이브러리가 아마도 필요한 것일 수 있습니다. regular expression 라이브러리가있는 GNU C 라이브러리를 사용하는 경우 pattern matching. Win32 컴파일러의 경우, Regex for Windows GNU 코드의 포트를 사용할 수 있습니다. 내가 당신의 구문 분석 텍스트 C에서 키 값의 가게를 찾고 제안 할 수

또한
A) try using strtok to split the text at ',' and then split the resulting subtexts only once at ':' ,that way you would get the key,value pairs you desire. 
B) use a regEx api under C that would basically solve your issue. 

는 (C++ 하나를 가지고 있지만 난 정말 C에 대해 알고하지 않습니다)

0

내 제안

은 C에서 JSON 문자열을 구문 분석하려고합니까? 그런 식으로 문제를 표현한다면, 당신은 다른 관점의 해답을 얻을 수 있습니다.
+0

C++의 키/값에 대한 추가 세부 정보를 제공해 주시겠습니까? – Whoami

관련 문제