Regexp: Take the expression with text only
2 views (last 30 days)
Show older comments
Hi,
I am new with regexp... I have one string
Test='"Name": "Vincent_1213","Name": "Vincent"';
And I would like to take the expression "Name": "Vincent" and NOT "Name": "Vincent_1213". I am using
regexp(Test,'"Name": "(.*?)"','match')
but it finds naturally both expressions. I cannot enter "Vincent" or "Vincent_1213" in the search because this info will change all the time. "Name": "" is the only consistent expression that I will get all the time.
Does someone have any idea on how to use regexp in order to take the expression with only text ?
2 Comments
Guillaume
on 3 Mar 2016
What is the reason for rejecting "Vincent_1213"? The fact that it's got numbers? The fact that it's got an underline? Some other reason?
Accepted Answer
Guillaume
on 3 Mar 2016
So basically, for the name you want to match any character that is not a number, or underscore. You could also add that you do not want to match the quote '"' to avoid the non-greedy operator. All of this is easily specified as a negated character class: [^0-9_"], so:
regexp(Test, '"Name": "[^0-9_"]+"', 'match')
%and if you just want the name itself:
regexp(Test, '(?<="Name": ")[^0-9_"]+(?=")', 'match')
0 Comments
More Answers (0)
See Also
Categories
Find more on Characters and Strings 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!