Skip commas inside brackets when the expression has operators

Hi all,
I am trying to split a string
"A(B,'C'),D(E,'F'),'==','G','H"
using strsplit so that I get these separately
A(B, 'C')
D(E, 'F')
'=='
'G'
'H'
Any help would be appreciated.
Dhanesh

1 件のコメント

J. Alex Lee
J. Alex Lee 2022 年 3 月 31 日
Maybe look into regex or Matlab's new "patterns".

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

回答 (2 件)

Pravarthana P
Pravarthana P 2022 年 4 月 4 日

0 投票

Hi Dhanesh Kumar,
I understood that you are trying to split the string at commas except that within the brackets.
The function “regexp can be used to match the expression and eliminate the commas:
For example,
test = 'Ram,C,D,GH(cat,abc,6),,xyz';
regexp(test,'\w+(\([^)]+\))?', 'match')
Reference link: Function "regexp"
Hope this helps you!!
Xingwang Yong
Xingwang Yong 2022 年 4 月 4 日

0 投票

expr1 = '(?<=\([^)]*),(?=.*\))'; % comma inside parenthesis, like '(..., ...)'
index_comma_in_paren = regexp(line, expr1);
Once I did this for my file exchange submission alignMatrix.m. Hope it helps.

カテゴリ

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

製品

リリース

R2021a

タグ

質問済み:

2022 年 3 月 31 日

回答済み:

2022 年 4 月 4 日

Community Treasure Hunt

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

Start Hunting!

Translated by