regexp shows an error while reading a space in text file.
1 view (last 30 days)
Show older comments
Aakriti Srivastava
on 25 Jul 2022
Edited: Aakriti Srivastava
on 25 Jul 2022
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
on 25 Jul 2022
I would debug by extending one bit at a time to see exactly where it is breaking
Accepted Answer
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
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
2 Comments
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!