It's not possible to combine those regexps if those are trully meant to be captures ((...)) and not groupings ((?:...)). At least, it wouldn't be possible without change the variables in which the data is captured.
Let's assume that you only used the parens for grouping (and that you forgot $ at the end of each regexp), then you'd be starting with the following:
if ($file =~ /^\d{8}(?:_\d+)*\.ilf$/i || $file =~ /^\d{8}(?:\s\d+)*\.sht$/i ) { ... }
The possibilities for joining are still quite limited since there is a mixture of common and not common elements. The following illustrates this:
vvvvvvvvv vvv vvv vvvv common /^\d{8}(?:_ \d+)*\.ilf$/ix /^\d{8}(?:\s\d+)*\.sht$/ix ^^ ^^^ not common
The best that can be done, as far as I can tell, is to join the common beginning and the common ending. The following illustrates this:
(?:_ \d+)*\.ilf /^\d{8} $/ix (?:\s\d+)*\.sht
We get the following regexp:
if ($file =~ /^\d{8}(?:(?:_\d+)*\.ilf|(?:\s\d+)*\.sht)$/i) { ... }
This is definitely less readable.
In reply to Re: File name regex
by ikegami
in thread File name regex
by dev2dev
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |