Read data from string
1 次查看(过去 30 天)
显示 更早的评论
I have string line:
x='abc123(xyz456)'
How to read information only in brackets, to have result:
y='xyz456'.
0 个评论
采纳的回答
Evan
2013-8-7
编辑:Evan
2013-8-7
>> x='abc123(xyz456)';
>> regexp(x,'(?<=\().+(?=\))','match')
ans =
'xyz456'
This command uses regexp and, specifically, lookaround assertions. It's basically saying, if you find a group of characters, look behind to see if there is an "open parenthesis" character and look ahead to see if there is a "close parenthesis" character. If so, return all the characters between them.
6 个评论
per isakson
2013-8-7
编辑:per isakson
2013-8-7
Surprise!
regexp('_A_A-', '(?<=_)[^_]+?(?=-)', 'match' )
ans =
'A'
Thus, doc should say something like
Lazy expression: match as few characters as necessary **downstream**.
Cedric
2013-8-7
编辑:Cedric
2013-8-8
Yep, in other words, it stops when it matches the last part of the pattern for the first time (lazy), but it doesn't pull back the starting point (the tail? ;-)) to minimize the match (not that lazy finally, or really really lazy in fact). Thankfully, you see/understand this once and you never forget it!
更多回答(2 个)
Azzi Abdelmalek
2013-8-7
y=regexp(x,'(?<=\()[\w]+(?=\))','match')
1 个评论
Azzi Abdelmalek
2013-8-7
%or
x=x='abc123 (xyz 45_6) ddd (rtr)ccc'
y=regexp(x,'\(([\w\s]+)\)','tokens');
celldisp(y)
Jan
2013-8-7
x = 'abc123(xyz456)';
ini = strfind(x, '(');
fin = strfind(x, ')');
key = x(ini(1) + 1:fin(1) - 1);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!