The question is about PERL regular expressions.
I need to match a string that
- starts with
<and ends with> - must contain number
[0-9] - can optionally contain
\s(i.e. space) and, - any number of characters
- order is random
This pattern does not discriminate between mandatory and optional characters:
/<[0-9,\s] >/
and will match:
<9>
<9,10>
<9, 10>
which is what I want, but also these two that I dont want:
< >
<,>
So, how to set a PERL regex that will find a match that will always contain 0-9 and can optionally contain \s, ?
CodePudding user response:
how to set a PERL regex that will find a match that will always contain
0-9and can optionally contain\s,:
Verbatim for this requirement, you can use this regex:
/<[\d,\h]*\d[\d,\h]*>/
Which stands for:
<: Match a<[\d,\h]*: Match 0 or more digits or whitespace or comma\d: Match a digit[\d,\h]*: Match 0 or more digits or whitespace or comma>: Match a>
CodePudding user response:
You can use
<\d (?:,\s*\d )*>
See the regex demo. Details:
<- a<char\d- one or more digits(?:,\s*\d )*- zero or more occurrences of a,, zero or more whitespaces and then one or more digits>- a>char.
