Filter löschen
Filter löschen

Regexp: Take the expression with text only

1 Ansicht (letzte 30 Tage)
Vincent
Vincent am 3 Mär. 2016
Beantwortet: Guillaume am 3 Mär. 2016
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 Kommentare
Guillaume
Guillaume am 3 Mär. 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?
Vincent
Vincent am 3 Mär. 2016
It can have space and "-" For instance it can be "Carl-David Dupont" and "Carl-David Dupont_2549". In this case and all other cases I want the first expression and not the second one. Cause of rejection: number and underline (both of them will be systematically located at the same place all the time)

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Guillaume
Guillaume am 3 Mär. 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')

Weitere Antworten (0)

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by