regexp to match certain words in a string

4 visualizzazioni (ultimi 30 giorni)
I have a string which looks like this
ternaryMassDensity{Xmole(1)=0.0Xmole(2)=1.0rho(1)=2343rho(2)=2343}ThermalConductivity{Xmole(1)=0.0Xmole(2)=1.0kappa(1)=3,2,13,...,2kappa(2)=2,1,11,...,3Tref=...}ElectricalConductivity{sigma0=1e5Tref=300}Mobility{Xmole(1)
I need to match the words like MassDensity, Mobility, ThermalConductivity etc.,
Can anyone tell me how I can do this using regexp, or any other way which might be easier.

Risposta accettata

Jacob Halbrooks
Jacob Halbrooks il 26 Feb 2014
Looking at your string, I see parameter value pairs in the pattern of Param{Value}Param{Value}. If that is the case, then a regular expression can pull these out using the code below (note that I added a closing curly bracket to your string):
>> pvRawString = 'ternaryMassDensity{Xmole(1)=0.0Xmole(2)=1.0rho(1)=2343rho(2)=2343}ThermalConductivity{Xmole(1)=0.0Xmole(2)=1.0kappa(1)=3,2,13,...,2kappa(2)=2,1,11,...,3Tref=...}ElectricalConductivity{sigma0=1e5Tref=300}Mobility{Xmole(1)}';
>> pvs = regexp(pvRawString, '(?<Parameter>\w+){(?<Value>.*?)}','names');
>> pvs(1)
ans =
Parameter: 'ternaryMassDensity'
Value: 'Xmole(1)=0.0Xmole(2)=1.0rho(1)=2343rho(2)=2343'
The "pvs" variable above is a struct array of length 4, one for each parameter/value pair found. Note that the regular expression above will fail if curly brackets are nested within the parameter value.
  3 Commenti
Ajay
Ajay il 26 Feb 2014
actually you have the exact idea.
Ajay
Ajay il 26 Feb 2014
actually I found what I was looking for thanks for your help. Really appreciated.

Accedi per commentare.

Più risposte (1)

Jos (10584)
Jos (10584) il 26 Feb 2014
Here is how:
WORDS = {'MassDensity', 'Mobility', 'ThermalConductivity'}
IDX = regexp(str, WORDS)
% IDX{k} holds all the start indices for the word WORDS{k}
But what is the next step?

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by