Regexp lookbehind and lineanchors
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Could someone help me to understand why
st = ' a b c';
pattern = '(?<=^\s*)c';
regexp(st,pattern,'lineanchors')
ans =
[]
i.e., does not match (as I expected), while
st2 = [newline,st];
regexp(st2,pattern,'lineanchors')
ans =
7
i.e., finds a match?
My intent is to match 'c' that is preceded by the beginning of a line and zero or more white character. How should I do?
2 Commenti
Stephen23
il 12 Set 2019
Modificato: Stephen23
il 13 Set 2019
Getting an output of 7 seems like a bug to me. Strangely the bug occurs even if the "zero or more matches" character does not even exist in the input string (R2012b):
>> regexp([char(10),st],'(?<=^_*)c','lineanchors') % Underscore is not in st.
ans =
7
>> regexp([char(10),st],'(?<=^)c','lineanchors') % expected
ans =
[]
>> regexp(st,'(?<=^_*)c','lineanchors') % expected
ans =
[]
What MATLAB version are you using?
You should report this as a bug, giving a link to this thread.
Risposta accettata
per isakson
il 13 Set 2019
Modificato: per isakson
il 16 Set 2019
"My intent is to match 'c' that is preceded by the beginning of a line and zero or more white character."
In the character array, ' a b c', the character, 'c', is (after the beginning of the line) preceded not only by whitespace but also by the characters 'a' and 'b'. Thus, [] is the expected result. Try
%%
chr = ' a b c';
xpr = '(?<=^[ ab]*)c';
regexp( chr, xpr, 'match', 'lineanchors' )
that returns
ans =
1×1 cell array
{'c'}
I fail to understand the behavior of your second example. I expect [], not 7. It's looks like a bug to me.
/R2018b
ADDENDUM
I learned something about the option,'once', the other day. It affects the type of the output. In this case the output is a character row instead of a cell array containing the character row. Thus,
>> regexp( chr, xpr, 'match', 'lineanchors', 'once' )
ans =
'c'
2 Commenti
per isakson
il 13 Set 2019
"Could someone help me to understand why" I think I did that.
I cannot help regarding the "real scenario" because of lack of information.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Data Import and Export in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!