I have string a = 'a_b_c_d(1.0)'
I need to extract the number within the bracket.
my answer shoud be b = '1.0'
how can i do this using regular expression or other method?
Thank you

4 件のコメント

Brian Hannan
Brian Hannan 2015 年 6 月 29 日
How about this?
regexp(x,'(?<=\().*(?=\))','match')
Gopalakrishnan venkatesan
Gopalakrishnan venkatesan 2015 年 6 月 29 日
Thank you
Guillaume
Guillaume 2015 年 6 月 29 日
It may be safer to use a non-greedy * (that is *?) in case there is more than one bracketed expression in the string.
Brian Hannan
Brian Hannan 2015 年 6 月 29 日
Good idea.

サインインしてコメントする。

 採用された回答

Guillaume
Guillaume 2015 年 6 月 29 日
編集済み: Guillaume 2015 年 6 月 29 日

1 投票

Any number of regular expression would do 'extract whatever is between two brackets:
str = 'a_b_c_d(1.0)';
regexp(str, '(?<=\()[^)]*(?=\))', 'match', 'once')
is one possibility. This
  • looks ahead for an opening bracket.
  • matches any number of characters as long as they're not a closing bracket
  • looks behind for a closing bracket.

その他の回答 (1 件)

Thorsten
Thorsten 2015 年 6 月 29 日
編集済み: Thorsten 2015 年 6 月 29 日

0 投票

This extracts all digits and all '.' from a:
numstr = a(regexp(a, '[\d\.]'))
This extracts all numbers between ( ), where number must have at least one digit before the point and one digit after the point:
numstr = regexp(a, '\((\d+\.\d+)\)', 'tokens')
The outer \( and \) match the '(' and ')', resp., in a, and the inner ( ) are meta-characters to group a token.

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by