MATLAB Answers

Validate and get exact number of characters using the regular expression

52 views (last 30 days)
Bhaskar R
Bhaskar R on 8 Mar 2020
Commented: Bhaskar R on 12 Mar 2020
Hi all,
I am using MATLAB R2016a version and working on a chacters set like
str = 'ENGINE-45'; % this is okay(digits are 2 after hyphen)
where i need to validate and get as numbers of digits after hyphen (-), it should be 2 digtits but in some case it is 3, 4, 5 number digits like
str = 'ACCCAT-455'; % this is not okay(3 digits)
str = 'VCCASNSRR-12344'; % this is not okay(5 digits)
I have used reguler expresion to get charcters and digits as
out_str = regexp(str, '[A-Z]+-[0-9]{2}', 'match');
ans =
'VCCASNSRR-12' % used {2} but where inputs are 5, tryiing to restrict this to only 2 char
but this is not what i required i need to get if and only 2 digits after hyphen?

Accepted Answer

J. Alex Lee
J. Alex Lee on 8 Mar 2020
Try
out_str = regexp(str, '[A-Z]+-[0-9]{2}$', 'match');

  9 Comments

Show 6 older comments
Bhaskar R
Bhaskar R on 12 Mar 2020
Sorry for if i am unclear, need to restrict the input string with specific length as
6 characters-5 digits-2 digits
Example:
str = 'ENGINE-12345-23';
In reguler expression
'...-[0-9]{2}$'; % which is restricting the last input after hyphen ( here 23) is ok
% in the same way first two string inputs(ENGINE, 12345) need restrict to 6 and 5 respectively
In the suggested link Anchors working with specfic characters but not with number of characters.
Stephen Cobeldick
Stephen Cobeldick on 12 Mar 2020
@J. Alex Lee: yes thank you, fixed now.
@Bhaskar R: use an anchor. It worked for me:
regexp(str, '^[A-Z]{6}-\d{5}-\d{2}$', 'match', 'once')

Sign in to comment.

More Answers (1)

dpb
dpb on 8 Mar 2020
I can get you closer, but not exactly right...
regexp(s,'-\d{2}\>','match')
will return only matches of exactly two digits after the "-", but for those cases that do match, also returns the leading "-"
I'm not sure how to prevent that...I'm pretty lame at regular expressions.

  7 Comments

Show 4 older comments
J. Alex Lee
J. Alex Lee on 8 Mar 2020
yep, didn't mean to suggest otherwise either.
I don't know relative computational cost either, and hadn't seen comments about it; will definitely keep in mind. But I suppose in any case it makes sense to reach for regex only when you're at the limit of simple text processing.
dpb
dpb on 8 Mar 2020
My thinking for past 40 years! I like the quip about only aliens...am in full agreement! :)
Some people when confronted with a problem think "I know, I'll use regular expressions." Now they have two problems.
Bhaskar R
Bhaskar R on 9 Mar 2020
Thank for the for the response dpb, I have data varying with another string so I had to stick to use only reguler expressions only as of now.

Sign in to comment.

Products


Translated by