How to extract info from string using regexp?

조회 수: 1(최근 30일)
Peter Valent
Peter Valent 2019년 5월 22일
댓글: Peter Valent 2019년 5월 22일
I have a text file with a number of lines such as:
[DEBUG][HoraCorrelationMatrixNode] Polygon 2303 id 857befored
[DEBUG][HoraCorrelationMatrixNode] Polygon 2304 id 88befored
[DEBUG][HoraCorrelationMatrixNode] Polygon 2305 id 930befored
[DEBUG][HoraCorrelationMatrixNode] Polygon 2306 id 1000d
[DEBUG][HoraCorrelationMatrixNode] Polygon 2307 id 1001d
I need to extract both polygon number (2303) and its id (857befored). How to write a regular expression pattern to obtain both information?
  댓글 수: 1
Peter Valent
Peter Valent 2019년 5월 22일
@Stephen Cobeldick: It has to be regular expression beccause the txt file also contains line that are formated diferently. I Think that a regular expression is the best solution for this task. I just didn't know how to write the patterns. But thank you for suggestions.

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

채택된 답변

Guillaume 2019년 5월 22일
This should work:
filecontent = fileread('c:\somewhere\somefile');
polyid = regexp(filecontent, 'Polygon (\d+) id (\S+)', 'tokens');
polyid = vertcat(polyid{:});
result = table(str2double(polyid(:, 1)), polyid(:, 2), 'VariableNames', {'Polygon', 'ID'})
  댓글 수: 1
Peter Valent
Peter Valent 2019년 5월 22일
Works very well. Thanks.

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

추가 답변(1개)

Raghunandan V
Raghunandan V 2019년 5월 22일
Since all the lines are of same format. I would reccomend you to do something like this
str = ['[DEBUG][HoraCorrelationMatrixNode] Polygon 2303 id 857befored']
Polygon_num = str(45:49)
id_num = str(52:end)
This would be easier to implement





Community Treasure Hunt

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

Start Hunting!

Translated by