regexp to match certain words in a string
4 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
Jacob Halbrooks
2014-2-26
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.
更多回答(1 个)
Jos (10584)
2014-2-26
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?
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!