regexp shows an error while reading a space in text file.

2 views (last 30 days)
This is the section that I want to read using regexp from port 12 to port 22 as
PORT 23 P=1 Z=50
PORT 12 P=2 Z=50 PIN_ID=CB7TX
PORT 13 P=3 Z=50 PIN_ID=CB7RX
PORT 14 P=4 Z=50 PIN_ID=CB66TX
PORT 15 P=5 Z=50 PIN_ID=CB25TX
PORT 16 P=6 Z=50 PIN_ID=CB25RX
PORT 22 P=7 Z=50 PIN_ID=CB66RX
This is the code I am using
[port_tokens2,port_match3] = regexp(data,'PORT\s+(\d+)\s+(\w+=\d)+\s+\w+=\d+\s','tokens','match')
Result I got
port_match3 =
1×7 cell array
Columns 1 through 5
{'PORT 23 P=1 Z=5…'} {'PORT 12 P=2 Z=50 '} {'PORT 13 P=3 Z=50 '} {'PORT 14 P=4 Z=50 '} {'PORT 15 P=5 Z=50 '}
Columns 6 through 7
{'PORT 16 P=6 Z=50 '} {'PORT 22 P=7 Z=50 '}
But I want to read PIN_ID = CBXXXX also so I used this expression
[port_tokens2,port_match3] = regexp(data,'PORT\s+(\d+)\s+(\w+=\d)+\s+\w+=\d+\s\w+=w+','tokens','match')
This is the result I got
port_match3 =
0×0 empty cell array
Would anyone please let me know what is wrong with my expression that I am not able to read the whole sentence.
  3 Comments
Walter Roberson
Walter Roberson on 25 Jul 2022
I would debug by extending one bit at a time to see exactly where it is breaking

Sign in to comment.

Accepted Answer

VBBV
VBBV on 25 Jul 2022
ss = 'PORT 12 P=2 Z=50 PIN_ID=CB7TX'
[port_tokens2,port_match3] = regexp(ss,'PORT\s+(\d+)\s+(\w+=\d)+\s+\w+=\d+\s+(\w*=\w*)','tokens','match')
You can try this

More Answers (1)

Jakob Hölzl
Jakob Hölzl on 25 Jul 2022
Hi,
regex101.com is a good website for such cases.
When I checked it there, the problem seemed to be that the last w+ should be \w+ to match the value of the PIN_IDs
Kind regards,
Jakob

Tags

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by