2011-10-30 4 views
3

다음 문자열에서 quantity = 100;100을 얻기 위해 정규 표현식을 사용하고 싶습니다.matlab 정규 표현식

왜 다음 정규식을 반환하지 않습니다 100 ??

regexp('quantity=100;','(?=\w*\s*\=\s*)[^]+(?=\s*;$)','match','once')

답변

2

당신은 앞서 처음에 정규식 부정적인 모습을 사용해야합니다,이 시도 :

regexp('quantity=100;','(?<=\w*\s*\=\s*)[^]+(?=\s*;$)','match','once')

또는

regexp('quantity=100;', '(?<=^.*\=\s*)(.*)(?=\s*;$)', 'match', 'once')을에

+0

그 일을 했어, 고마워! –

+0

[^] + 실제로 오류없이 컴파일하는 것을 본 적이 없습니다. Matlab 일 것임에 틀림 없습니다. – FailedDev

+0

@FailedDev : 예 이상한 일이지만 적어도 matlab에서 작동합니다 – niels

7

정규식을 훨씬 더 간단하다 임의의 숫자와 일치하는 문자는 \d입니다. 따라서 문자열의 형식이 text=numbers 인 경우 다음이 작동합니다.

digits = regexp('quantity=100;', '\d', 'match'); 
result = [digits{:}] 

result = 
     '100' 

MATLAB은 일치하는 셀 배열을 반환합니다. 따라서 'once'1 만 반환하므로 사용할 수 없습니다.

+0

이것은'result = regexp ('quantity = 100;', '\ d +', 'match')' –