2011-10-30 19 views
3

以下の文字列にquantity = 100;100を得るために正規表現を使用したいと思います。matlab正規表現

次の正規表現が返されないのはなぜですか?100 ??

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

答えて

2

あなたが先に初めにregexで負の外観を使用する必要があり、これを試してみてください。

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')' –