Get number from a string

조회 수: 134(최근 30일)
Lucas 2012년 9월 12일
I have a string that looks like this
I need to be able to pull the number out of that, and I was using the following to do so:
num = regexp(str, '\d+', 'match');
and that worked will I ran into strings like:
When lpdlogic21 is true....
and I started getting numbers that I didn't want, so I switched it to this:
num = regexp(lines{1}{jj}, '(?<words>\w*).(?<ID>\d*)', 'names');
but this didn't work for the off string either. It gave me num with about 20 entries in it. So my question is what can I use so I only get answers for the first string but none of the others. This is a basic question and I know I should know this by now, but I'm drawing a blank right now.
  댓글 수: 1
Matt Fig
Matt Fig 2012년 9월 12일
What others? You need to give a rule for deciding when to return a number and when not to return a number.

댓글을 달려면 로그인하십시오.

채택된 답변

Matt Fig
Matt Fig 2012년 9월 12일
편집: Matt Fig 2012년 9월 12일
What do you mean it didn't work. Seems to work here. So what numbers do you want? Only numbers that are after a '.' or what (use: '\.\d+')? Be specific!
str = 'When lpdlogic21 is true....';
num = regexp(str, '\d+', 'match')
num =
  댓글 수: 1
Matt Fig
Matt Fig 2012년 9월 12일
편집: Matt Fig 2012년 9월 12일
O.k., so the rule is: if the string has any spaces whatsoever, return nothing. If it has no spaces return all numbers following a decimal. Got it.
num = {};
if ~any(isspace(str))
num = regexp(T, '(?<=\.)\d+', 'match');

댓글을 달려면 로그인하십시오.

추가 답변(0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by