Your observation that /\d/ and /[0-9]/ are (edit-insert: s/equivalent/loosely equivalent) loosely equivalent in regexen
(see Jenda's Re^3: Is regex 1 covered by regex 2;
note also that "equivalent" was my word choice; hdb's phrasing was clearly better)
is precisely why "similarity... as strings" (as judged by Text::Levenshtein or any package based on a minimally variant definition) is irrelevant in light of OP's specific objective of identifying equivalent regexen ("if a new regex given is already covered by another".
From perldoc Text::Levenshtein:
This module implements the Levenshtein edit distance, which measures the difference between two strings, in terms of the *edit distance*. This distance is the number of substitutions, deletions or insertions ("edits") needed to transform one string into the other one (and vice versa)....
I suspect (emphasis "suspect"; but lack the time just now to test the suspicion) that an approach with some chance of success in OP's terms would involve using the regex engine itself (but NOT by testing variants against identical data... where there would be far too many un-covered possibilities; edge cases and other instances where having two regexen match a particular text would lack rigor.
A study of the code used in various regex testers or tutors might be profitable.
In reply to Re^2: Is regex 1 covered by regex 2
by ww
in thread Is regex 1 covered by regex 2
by Kafka
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |