condition in regular expression

7 views (last 30 days)
Patrick Mboma
Patrick Mboma on 28 Jan 2017
Edited: Patrick Mboma on 28 Jan 2017
Hi,
I would like to match a regular expression, which can take two forms:
aaa1(-1)&abcd
or
bbb2&aefdg
More specifically,
  • the expression starts with word characters (e.g. aaa1 or bbb2)
  • it is optionally followed by a parenthesis, then a minus sign, then a closing parenthesis
  • it is followed by the ampersand (&)
  • it is followed by word characters and then
I would like to capture those expressions and I wrote the following code, which does not work well
expr='\<(?<before>\w+)\>(\(-)?(?<digit>\d+)?(\))?&(?<after>\w+)';
regexp('vvv&mp abvg(-5)&ads abvg-5&ads',expr,'names')
It does not work well because the third expression (abvg-5&ads) should not be a match. That is, the digits should be matched only if they are around parentheses.
I thought that maybe using some form of condition
(?(cond)expr1|expr2)
would help but I was not successful in implementing it. Maybe that is the way to go, maybe there is another way, I don't know.
Any suggestions?
Thanks

Answers (0)

Community Treasure Hunt

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

Start Hunting!