regexp shows an error while reading a space in text file.
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Aakriti Srivastava
am 25 Jul. 2022
Bearbeitet: Aakriti Srivastava
am 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 Kommentare
Walter Roberson
am 25 Jul. 2022
I would debug by extending one bit at a time to see exactly where it is breaking
Akzeptierte Antwort
VBBV
am 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
Weitere Antworten (1)
Jakob Hölzl
am 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 Kommentare
Siehe auch
Kategorien
Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!