I m working on a code that parse whatever occur between the quations as shown in my example below
raw="square format" tag_id=
I want parse only between the quotations (highlighted in bold) "whateverhere even space or dots" parse me
your help is highly appreciated

2 件のコメント

per isakson
per isakson 2014 年 2 月 7 日
  • What has tag_id= to do with the question?
  • raw="square format" tag_id= is that a sample string of text, out of which you want to extract square format?
Walter Roberson
Walter Roberson 2014 年 2 月 7 日
You say "whateverhere even spaces or dots". Does that include the possibility of double-quotes ?

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

 採用された回答

Ken Atwell
Ken Atwell 2014 年 2 月 7 日

0 投票

I think you want:
raw='"square format" tag_id='
regexp(raw, '"(.*?)"', 'tokens')
That gives you a cell array of all text found within double quotes, and nothing else. KEN

5 件のコメント

sst
sst 2019 年 3 月 20 日
編集済み: sst 2019 年 3 月 20 日
Hello Ken, by any chance do you have one for a slight variation of this problem? I was wondering if there's a good way to exclude the escape sequence \" directly in the regular expression pattern.
raw = ' "This is a sample string \" with an escape sequence" 0 1 abcdef';
Walter Roberson
Walter Roberson 2019 年 3 月 20 日
regexp(raw, '"(.*?)(<!\\)"', 'tokens')
However, this will fail if the \ is itself escaped. For example in
' "This is a sample string \\" with an escaped escape sequence" 0 1 abcdef'
then that is not really an \" since the \\ is marked as literal.
Parsing through to check for odd numbers of \ is a bit more complicated.
sst
sst 2019 年 3 月 21 日
Hello Walter, unfortunately that didn't work (R2018b). I only need to include the \" escape sequence, to avoid the ambiguity involved in the use of double quotes.
>> raw = ' "This is a sample string \" with an escape sequence" 0 1 abcdef';
>> regexp(raw, '"(.*?)(<!\\)"', 'tokens')
ans =
0×0 empty cell array
Guillaume
Guillaume 2019 年 3 月 21 日
sst, please start a fresh question rather than commenting on a 5 year old answer.
Walter Roberson
Walter Roberson 2019 年 3 月 21 日
regexp(raw, '"(.*?)(?<!\\)"', 'tokens')
You might want to add the 'once' option if you only expect one occurance.

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

その他の回答 (0 件)

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by